[英]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);
這會改變格式。 如果我選擇是繼續打開它會給我正確的數據。 我一直試圖找出一種方法,以便生成的數據相同,但不會彈出更改格式的警告。 請指教?
您為文件提供的.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.