【发布时间】:2016-04-18 17:19:59
【问题描述】:
我正在使用以下库:
http://mikesknowledgebase.azurewebsites.net/pages/CSharp/ExportToExcel.htm
这是我的代码:
private void exportExcelBtn_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count == 0)
{
MessageBox.Show("There's nothing to export", "Info", MessageBoxButtons.OK);
return;
}
DataTable save = Utilities.DataGridView2DataTable(dataGridView1, "TestingReport");
string outputFile = Utilities.saveDoc(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), save);
if (outputFile != null)
{
DialogResult opt = MessageBox.Show("Export successful. Would you like to view the file?", "Information", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (opt == DialogResult.Yes)
{
System.Diagnostics.Process.Start(outputFile);
}
}
}
我在两个不同的项目中使用完全相同的代码,但是在一个项目中,它创建的 excel 文件已损坏/无法读取。
在提取 .xlsx 文件的内容时,我注意到的第一件事是工作项目中存在的 [Content_Types].xml 文件不在不工作项目的输出中。此外,创建的 workbook.xml 文件都是 0kb,而工作项目文件中实际上包含数据。
我试过Console.WriteLine。
我还使用此代码将我的 DataGridView 转换为 DataTable,以便将其写入 excel:https://www.crealoq.com/solved/how-to-convert-datagridview-to-datatable-using-csharp
我已经完成并添加了Console.WriteLine(...) 以验证数据实际上是从这个函数返回的,并且一切看起来都很好。
编辑:
我注意到的唯一区别是,当我单击按钮保存 excel,然后选择不立即查看时,当我解压缩 excel 文档时,返回有效 excel 文档的应用程序允许我解压缩它,但是当我尝试解压缩 ISN 不起作用的那个时,它说文件当前已打开..
【问题讨论】:
标签: c# excel datagridview