首页 文章

将数据导出到网格中的Excel

提问于
浏览
0

我将数据从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 . 打开时我收到以下警告

enter image description here

虽然可能有其他原因导致类似的错误,但我认为这是由于以下2行

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

这会改变格式 . 如果我选择是继续打开它会给我正确的数据 . 我一直试图找出一种方法,以便生成的数据相同,但不会弹出更改格式的警告 . 请指教?

4 回答

  • 1

    您为文件提供的 .xls -extension保留为二进制Excel(BIFF8)格式 . 您正在保存分隔的文本文件,该文件的扩展名应为 .csv . 尝试更改文件名,它应该工作 .

    如果要生成专用的二进制Excel格式的文件,则必须进行手动操作并使用库,例如: ExcelLibrary .

  • 0

    您不能将简单文本写入Excel .xlsx 文件 .

    选项1:您编写 .csv 文件并在Excel中打开它 .

    选项2:使用libraby编写正确的 .xlsx 文件,例如ClosedXML

  • 1

    这是适合我的代码 . 按要求更新 .

    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)

  • 0

    我使用代码,但每行都存储在一个单元格(A1)中,并用逗号分隔每个字段

    但是当我使用GetData(DataFormats.Text)时,每个字段都有一列,但在Excel显示警告之前 .

相关问题