0

私のMVCアプリケーションでは、を使用してデータをExcelにエクスポートしていMicrosoft.Office.Interop.Excelます。

ASP.NET Impersonationまた、認証の詳細を有効にして提供しました。データをExcelに書き込みますが、Excelファイルを保存したり開いたりしません。例外をスローしますException from HRESULT: 0x800A03EC。誰かが助けてくれたらとてもうれしいです。前もって感謝します。

エクスポートの私のコードは次のとおりです。

public static void ExportExcel(this DataTable Tbl, string ExcelFilePath = null)
        {
            ExcelFilePath = "ExportTable.xls";
            try
            {
                if (Tbl == null || Tbl.Columns.Count == 0)
                    //throw new Exception("ExportToExcel: Null or empty input table!\n");
                    Console.WriteLine("ExportToExcel: Null or empty input table!\n");

                // load excel, and create a new workbook
                Excel.Application excelApp = new Excel.Application();
                excelApp.Workbooks.Add();

                // single worksheet
                Excel._Worksheet workSheet = excelApp.ActiveSheet;

                // column headings
                for (int i = 0; i < Tbl.Columns.Count; i++)
                {
                    workSheet.Cells[1, (i + 1)] = Tbl.Columns[i].ColumnName;
                    workSheet.Cells[1, (i + 1)].Font.Bold = true;
                    workSheet.Cells[1, (i + 1)].Font.Size = 12;
                }

                // rows
                for (int i = 0; i < Tbl.Rows.Count; i++)
                {
                    // to do: format datetime values before printing
                    for (int j = 0; j < Tbl.Columns.Count; j++)
                    {
                        workSheet.Cells[(i + 2), (j + 1)] = Tbl.Rows[i][j];
                    }
                }
                // works fine till here
                // check fielpath
                if (ExcelFilePath != null && ExcelFilePath != "")
                {
                    try
                    {
                        workSheet.SaveAs(ExcelFilePath);
                        excelApp.Quit();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("ExportToExcel: Excel file could not be saved! Check filepath.\n"+ ex.Message);
                    }
                }
                else    // no filepath is given
                {
                    excelApp.Visible = true;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ExportToExcel: \n" + ex.Message); 
            }

}

4

2 に答える 2

0

IIS ユーザー アカウントには、ファイルを書き込む権限が必要です。

次の記事「 ASP.NET C# で Excel ファイルを作成する方法」で 0x800A03EC を検索します。

于 2013-08-30T06:19:32.687 に答える
0

HRESULT: 0x800A03EC は (VB.Net にとって) 不明な COM エラーです。これは通常、入力またはパラメーターが間違っていたために Excel が何らかのエラーをスローした場合に発生します。コードを Excel VBA で試すと、多くの場合、問題の特定が容易になります。

于 2013-08-31T01:00:41.747 に答える