0

私が自分のPCで作業しているとき、以下のコードは正常に動作し、xslは指定されたパスに保存されます。しかし、アプリケーションがホストされ、xsl ファイルの保存中に 、HRESULT からの例外のようなエラー メッセージが表示されます: 0x800A03EC

クライアント PC に xsl ファイルを保存する方法を教えてください。コードを変更する必要があります。???

  public void Convertoxsl(DataSet ds)
        {
            Application ExcelApp = new Application();
            Workbook ExcelWorkBook = null;
            Worksheet ExcelWorkSheet = null;
            string FileName = string.Empty;
            ExcelApp.Visible = true;
            ExcelWorkBook = ExcelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

            List<string> SheetNames = new List<string>();
            string sn = ddlPageName.SelectedItem.Text;
            SheetNames.Add(sn);


            try
            {
                int getcol = 0;
                for (int i = 1; i < ds.Tables.Count; i++)
                    ExcelWorkBook.Worksheets.Add(); //Adding New sheet in Excel Workbook

                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    int r = 1; // Initialize Excel Row Start Position  = 1

                    ExcelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ExcelWorkBook.Worksheets[i + 1];

                    //Writing Columns Name in Excel Sheet

                    for (int col = 1; col <= ds.Tables[i].Columns.Count; col++)
                    {
                        if (ds.Tables[i].Columns.Count != 3)
                        {
                            return;
                        }
                        ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Columns[col - 1].ColumnName;
                        getcol = col;
                    }



                       r++;



                    //Writing Rows into Excel Sheet
                    for (int row = 0; row < ds.Tables[i].Rows.Count; row++) //r stands for ExcelRow and col for ExcelColumn
                    {
                        // Excel row and column start positions for writing Row=1 and Col=1
                        for (int col = 1; col <= ds.Tables[i].Columns.Count; col++)
                            ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Rows[row][col - 1].ToString();


                        r++;
                    }
 ExcelWorkSheet.Name = SheetNames[i];//Renaming the ExcelSheets


            }


           string dirPageName = D:\projectPath;
           FileName =dirPageName +abc + ".xlsx";


            if (!Directory.Exists(dirPageName))
            {
                Directory.CreateDirectory(dirPageName);
            }

            if (File.Exists(FileName))
            {
                File.Delete(FileName);
            }


            ExcelWorkBook.SaveAs(FileName);

            ExcelWorkBook.Close();
            ExcelApp.Quit();
            Marshal.ReleaseComObject(ExcelWorkSheet);
            Marshal.ReleaseComObject(ExcelWorkBook);
            Marshal.ReleaseComObject(ExcelApp);
            ltMessage.Text ="File Successfully exported";
            ltMessage.Visible = true;




        }
        catch (Exception exHandle)
        {



            ltMessage.Text = exHandle.Message;
            ltMessage.Visible = true;
        }
        finally
        {

            foreach (Process process in Process.GetProcessesByName("Excel"))
                process.Kill();
        }
    }
4

1 に答える 1

0

HRESULT: 0x800A03EC は (VB.Net にとって) 不明な COM エラーです。これは通常、入力またはパラメーターが間違っているか機能しなかったために Excel が何らかのエラーをスローした場合に発生します。

また、エラー内容をよく確認してください。私の場合、データ セクションには、Excel によってスローされた正確なエラーについての手がかりを与える項目がありました。

@Erwin のコメント: IIS ユーザー アカウントには、ファイルを書き込む権限が必要です。次の記事「 ASP.NET C# で Excel ファイルを作成する方法」で 0x800A03EC を検索します。

于 2013-08-31T01:09:23.153 に答える