我試圖將第二張表添加到Excel文檔,其中每張表是Datatable
。我發現,當附加表單被添加時,第一張表單正在被數據擦除。爲什麼是這樣,我如何確保數據不被擦除?將表格添加到Excel工作簿
void Export(DataTable dt)
{
Microsoft.Office.Interop.Excel.Application excel = null;
Microsoft.Office.Interop.Excel.Workbook wb = null;
object missing = Type.Missing;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
Microsoft.Office.Interop.Excel.Range rng = null;
try
{
excel = new Microsoft.Office.Interop.Excel.Application();
wb = excel.Workbooks.Add();
if (firstRun)
{
ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;
}
else
{
ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.Add();
}
for (int Idx = 0; Idx < dt.Columns.Count; Idx++)
{
ws.Range["A1"].Offset[0, Idx].Value = dt.Columns[Idx].ColumnName;
}
for (int Idx = 0; Idx < dt.Rows.Count; Idx++)
{
ws.Range["A2"].Offset[Idx].Resize[1, dt.Columns.Count].Value =
dt.Rows[Idx].ItemArray;
}
if (!firstRun)
{
excel.Visible = true;
wb.Activate();
}
firstRun = false;
}
catch (COMException ex)
{
MessageBox.Show("Error accessing Excel: " + ex.ToString());
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.ToString());
}
}
只是一個快速檢查 - 你可以在第一個if/else條件周圍放入括號{}和{},並檢查它是否修復了它? +我認爲'firstRun'總是'false'? – Vityata
將'excel.Visible = true;'放在代碼的前面,然後一行一行地逐行查看代碼導致清除的內容。 – mjwills
@mjwills謝謝,讓我找到解決方案。見下文。 – windowskm