我正在尝试将Web应用程序中的数据导出到Excel
这是我的课程ExcelExport
using Excel = Microsoft.Office.Interop.Excel;
public static class ExcelExport
{
public static void ExportDataTableToExcel(DataTable table, string filePath, bool overwrite = false)
{
if (File.Exists(filePath))
{
if (overwrite)
File.Delete(filePath);
else return;
}
Excel.Application excelApp = new Excel.Application();
Excel.Workbook excelWorkBook = excelApp.Workbooks.Add();
Excel.Worksheet excelWorkSheet = excelWorkBook.Sheets.Add();
excelWorkSheet.Name = table.TableName;
for (int i = 1; i < table.Columns.Count + 1; i++)
excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
for (int j = 0; j < table.Rows.Count; j++)
for (int k = 0; k < table.Columns.Count; k++)
excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
excelWorkBook.SaveAs(filePath);
excelWorkBook.Close();
excelApp.Quit();
}
public static void Main(string[] args)
{
DataTable table = new DataTable("test");
table.Columns.AddRange(
new []
{
new DataColumn("Id", typeof(int)),
new DataColumn("Name", typeof(string))
}
);
DataRow row = table.NewRow();
row["Id"] = 1;
row["Name"] = "Me";
table.Rows.InsertAt(row, 1);
ExportDataTableToExcel(table, @"c:\temp\bla.xlsx", true);
}
}
如您所见,还有一个Main方法。当我尝试将其作为控制台应用程序运行时,效果很好。
当我在Web应用程序中运行此程序(使用相同的参数调用相同的函数,甚至调用Main()
)时,我在excelWorkBook.SaveAs(filePath);
处遇到了以下异常:
System.Runtime.InteropServices.COMException:“来自HRESULT的异常:0x800A03EC”
有什么想法可能出问题吗?或者您知道任何解决方法?
答案 0 :(得分:1)
我找到了解决方案,使之可行:
您可以使用SaveAs
代替excelWorkBook.SaveCopyAs(filePath);
,它可以工作。
不确定为什么它会以除SaveAs
之外的其他方式/更好的方式工作,但是它可以工作。