我正在使用Microsoft.Office.Interop.Excel来读取内存中打开的电子表格.
gXlWs = (Microsoft.Office.Interop.Excel.Worksheet)gXlApp.ActiveWorkbook.ActiveSheet;
int NumCols = 7;
string[] Fields = new string[NumCols];
string input = null;
int NumRow = 2;
while (Convert.ToString(((Microsoft.Office.Interop.Excel.Range)gXlWs.Cells[NumRow, 1]).Value2) != null)
{
for (int c = 1; c <= NumCols; c++)
{
Fields[c-1] = Convert.ToString(((Microsoft.Office.Interop.Excel.Range)gXlWs.Cells[NumRow, c]).Value2);
}
NumRow++;
//Do my other processing
}
Run Code Online (Sandbox Code Playgroud)
我有180,000行,结果非常慢.我不确定"转换"是否有效.反正我还能做得更快吗?
月亮
我要求使用Excel作为数据库的组织进行一些合同工作,并希望通过真实数据库对Excel数据进行一些处理.(是的,我知道,没关系......)
客户有一张Excel表,他们在内部使用这些表来跟踪一些政府计划.此Excel工作表中的数据曾经通过CSV作为中间格式手动导入SQL数据库,并通过一个小型Web应用程序提供.电子表格或数据库中的更改是手动完成的(由不同的人员完成),并且必须手动保持同步.
新功能的规范包括:
电子表格(实际上,它是工作簿中的几个)实现了与其他机构交互所必需的一些准则,因此在导入之前和之后必须保持结构相同.它包含大量格式,隐藏列和排序按钮以及不同工作表中单元格之间的大量数据链接.
我不想从头开始重现电子表格以提供导出,也不想在导入之前手动将正确的列提取到CSV中.我正在寻找一种加载Excel的方法,"查询"某些字段,将它们写入数据库,然后从数据库加载数据并仅操作正确单元格的内容.
有没有办法以编程方式与现有电子表格连接,只读取或更改您需要的位?