我有一个包含多个页面的电子表格。当我点击一个按钮时,我需要打开这个电子表格,并将从数据库返回的所有数据(数据集/数据表)写入电子表格中的一个页面。我看到了如此多的文章用于将数据集导出到新的Excel工作表。我是否打开现有的电子表格并使用asp.net / C#将数据集写入其中?
请帮助..
感谢。
更新
基本上我有以下代码将数据集导出到新的Excel工作表。
private void createDataInExcel(DataSet ds)
{
Application oXL;
_Workbook oWB;
_Worksheet oSheet;
Range oRng;
string strCurrentDir = Server.MapPath(".") + "\\excelreports\\";
try
{
oXL = new Application();
oXL.Visible = false;
//Get a new workbook.
oWB = (_Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (_Worksheet)oWB.ActiveSheet;
//System.Data.DataTable dtGridData=ds.Tables[0];
int iRow = 2;
if (ds.Tables[0].Rows.Count > 0)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
oSheet.Cells[1, j + 1] = ds.Tables[0].Columns[j].ColumnName;
}
// For each row, print the values of each column.
for (int rowNo = 0; rowNo < ds.Tables[0].Rows.Count; rowNo++)
{
for (int colNo = 0; colNo < ds.Tables[0].Columns.Count; colNo++)
{
oSheet.Cells[iRow, colNo + 1] = ds.Tables[0].Rows[rowNo][colNo].ToString();
}
iRow++;
}
}
oRng = oSheet.get_Range("A1", "IV1");
oRng.EntireColumn.AutoFit();
oXL.Visible = false;
oXL.UserControl = false;
string strFile = "excelreport" + DateTime.Now.Ticks.ToString() + ".xls";//+
oWB.SaveAs(strCurrentDir +strFile, XlFileFormat.xlWorkbookNormal, null, null, false, false, XlSaveAsAccessMode.xlShared, false, false, null,null, null);
// Need all following code to clean up and remove all references!!!
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
Marshal.ReleaseComObject(oRng);
Marshal.ReleaseComObject(oXL);
Marshal.ReleaseComObject(oSheet);
Marshal.ReleaseComObject(oWB);
}
catch (Exception theException)
{
Response.Write(theException.Message);
}
Response.Write("data exported");
}
是否有可能改进上面的代码将数据集写入现有的工作表?还有上面的代码花了大约一分钟将数据写入excel表。我不明白为什么需要这么长时间。
答案 0 :(得分:0)
不是100%确定您的代码所在,但是使用项目中引用的excel com对象,您可以使用Workbooks._Open方法打开工作簿,然后您可以使用工作簿的工作簿获取工作簿工作簿和get_Item。
如果您需要在工作簿中添加工作表,可以使用工作表收集上的添加。
也许如果您发布代码,我们可以建议在哪里进行改进。
这一行
oWB = (_Workbook)(oXL.Workbooks.Add(Missing.Value));
正在创建一个新的工作簿。使用
string workbookPath = "c:/SomeWorkBook.xls";
oWB = Workbooks.Open(workbookPath,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
现在它取决于你想要做什么添加新表,使用现有表等。
这是一个代码项目链接,可以更深入地展示here