【发布时间】:2016-02-22 16:19:50
【问题描述】:
所以我正在尝试为记录数据添加“导出到 .XLS”选项。我有以下代码段用于处理从 DataGridView 导出数据,但是当它打开 Excel 文件而不是当前存在的数据时,单元格 A1 只包含字符串“System.Drawing”。
谁能指出我做错了什么?谢谢。
private void copyGridToClipboard(DataGridView dg)
{
dg.SelectAll();
dg.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
DataObject dataObj = dg.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
private void myButton_Click(object sender, EventArgs e)
{
copyGridToClipboard(myDataGridView);
Excel.Application xlexcel;
Excel.Workbook xlWorkbook;
Excel.Worksheet xlWorksheet;
object misValue = System.Reflection.Missing.Value;
xlexcel = new Excel.Application();
xlexcel.Visible = true;
xlWorkbook = xlexcel.Workbooks.Add(misValue);
xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range CR = (Excel.Range)xlWorksheet.Cells[1, 1];
CR.Select();
xlWorksheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
}
【问题讨论】:
-
你熟悉
OpenXML吗?使用它比依靠使用ComInterop的缓慢而痛苦的过程更容易做到这一点我有一个实际发布的例子,说明如何使用@来做到这一点987654326@ 在此SO上通过网页发布回复 stackoverflow.com/questions/35351849/… 如果您不愿意使用第 3 方 dll,您可以非常快速地编写自己的解析器以将值写入逗号分隔文件并将其保存为.CSV
标签: c# excel-interop