我必须打开一个带有半毫米记录的大型excel文件150MB(excel 2007 .xlsx文件),我必须将其迁移到sql server,我使用oledbconnection,但是当我尝试打开连接时需要更多超过5分钟,然后出现System.OutMemoryExcepion。我认为这个连接试图打开内存中的所有文件,我怎么能逐行读取。 我正在使用Visual Net 2005和C#
string archivoExcel="c:\largeExcel.xlsx"
string conneStringInraSIS = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + archivoExcel + ";" +
"Extended Properties='Excel 12.0;HDR=YES;'";
OleDbConnection connexcel = new OleDbConnection(conneStringInraSIS);
connexcel.Open();
答案 0 :(得分:1)
优先级#1应该从xlsx电子表格中获取数据。发生这种情况后应用业务逻辑。我将从表格中导出CSV并处理它们。
答案 1 :(得分:1)
我遇到过这个问题。我在处理这个问题时发现的最好的事情是去codeplex.com并下载Excel.dll。这个DLL将很容易解决这个问题。使用此功能,您可以直接将数据保存到数据集中,然后执行您想要执行的操作。您可以在网站上找到示例代码。
答案 2 :(得分:0)
新答案(基于评论中的信息):
了解VSTO。我会创建一个插件,允许管理员单击功能区按钮将数据上传到SQL Server,然后从SQL Server检索信息(这将允许Excel处理自己的文件,确切地说它最好的方式)。
以下是一个可以帮助您入门的链接:MSDN Code Sample
您可以下载VSTO here。
答案 3 :(得分:0)