簡體   English   中英

將數據導出到網格中的Excel

[英]Exporting data to excel from grid

我將數據從WPF datagrid導出到我的應用程序中的excel工作表。 這是我到達的代碼片段。

dgDisplay.SelectAllCells();
dgDisplay.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dgDisplay);
//String resultat = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
String result = (string)Clipboard.GetData(DataFormats.Text);
dgDisplay.UnselectAllCells();
string path = Environment.CurrentDirectory + "\\Reports\\SampleReport.xls";
System.IO.StreamWriter file1 = new System.IO.StreamWriter(@path);
file1.WriteLine(result.Replace(',', ' '));
file1.Close();

現在,使用預期數據可以很好地創建excel文件。 但是通過代碼打開或使用excel。 打開時我收到以下警告

在此輸入圖像描述

雖然可能有其他原因導致類似的錯誤,但我認為這是由於以下2行

String result = (string)Clipboard.GetData(DataFormats.Text);

這會改變格式。 如果我選擇是繼續打開它會給我正確的數據。 我一直試圖找出一種方法,以便生成的數據相同,但不會彈出更改格式的警告。 請指教?

您不能將簡單文本寫入Excel .xlsx文件。

選項1:您編寫.csv文件並在Excel中打開它。

選項2:使用libraby編寫正確的.xlsx文件,例如ClosedXML

您為文件提供的.xls -extension保留為二進制Excel(BIFF8)格式。 您正在保存分隔的文本文件,該文件應具有擴展名.csv 嘗試更改文件名,它應該工作。

如果要生成專用的二進制Excel格式的文件,則必須進行手動操作並使用庫,例如ExcelLibrary

這是適合我的代碼。 按要求更新。

private void StartCreatingReport(DataGrid dgDisplay)
    {

        dgDisplay.SelectAllCells();
        dgDisplay.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
        ApplicationCommands.Copy.Execute(null, dgDisplay);
        String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);           
        dgDisplay.UnselectAllCells();

        string path = Environment.CurrentDirectory + "\\Reports\\SampleReport.csv";



        System.IO.StreamWriter file1 = new System.IO.StreamWriter(@path);

        file1.WriteLine(result);
        file1.Close();
    }

我將任何必須導出到excel的網格傳遞給此方法。 我還在路徑中放置了一個csv文件(本例中為SampleReport.csv)

我使用代碼,但每行都存儲在一個單元格(A1)中,並用逗號分隔每個字段

但是當我使用GetData(DataFormats.Text)時,每個字段都有一列,但在Excel顯示警告之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM