Я пытаюсь экспортировать данные из моего веб-приложения в 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-метод.Когда я пытаюсь запустить это как консольное приложение, это работает нормально.Когда я запускаю это в своем веб-приложении (вызывая ту же функцию с теми же параметрами, даже вызывая Main()
), я получаю следующее исключение в excelWorkBook.SaveAs(filePath);
:
System.Runtime.InteropServices.COMException: «Исключение из HRESULT: 0x800A03EC»
Есть идеи, что может пойти не так?Или вы знаете какие-нибудь обходные пути?