因此,我正在尝试构建一些程序以从XML转换为Excel文件。而且,我在excelWorkSheet.Name = table.TableName;
上不断收到错误消息 HRESULT异常:0x800A03EC 。
需要此问题的帮助。
private void ExportDataTableToExcel(System.Data.DataTable table, string Xlfile)
{
Microsoft.Office.Interop.Excel.Application excel =
new Microsoft.Office.Interop.Excel.Application();
Workbook book = excel.Application.Workbooks.Add(Type.Missing);
excel.Visible = false;
excel.DisplayAlerts = false;
Worksheet excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
excelWorkSheet.Name = table.TableName;
progressBar1.Maximum = table.Columns.Count;
for (int i = 1; i < table.Columns.Count + 1; i++) // Creating Header Column In Excel
{
excelWorkSheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
if (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
int percent = (int)(((double)progressBar1.Value /
(double)progressBar1.Maximum) * 100);
progressBar1.CreateGraphics().DrawString(percent.ToString() +
"%", new System.Drawing.Font("Arial",
(float)8.25, FontStyle.Regular), Brushes.Black,
new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));
System.Windows.Forms.Application.DoEvents();
}
}
progressBar1.Maximum = table.Rows.Count;
for (int j = 0; j < table.Rows.Count; j++) // Exporting Rows in Excel
{
for (int k = 0; k < table.Columns.Count; k++)
{
excelWorkSheet.Cells[j + 2, k + 1] = table.Rows[j].ItemArray[k].ToString();
}
if (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value++;
int percent = (int)(((double)progressBar1.Value /
(double)progressBar1.Maximum) * 100);
progressBar1.CreateGraphics().DrawString(percent.ToString() +
"%", new System.Drawing.Font("Arial",
(float)8.25, FontStyle.Regular), Brushes.Black,
new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));
System.Windows.Forms.Application.DoEvents();
}
}
book.SaveAs(Xlfile);
book.Close(true);
excel.Quit();
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(excel);
}