VB.NET - OleDbException表示插入Excel电子表格时Spreadsheet已满

时间:2011-11-11 18:21:12

标签: vb.net visual-studio-2010 excel oledb

我有一个VB.Net程序读取平面文件,然后逐行解析,将数据格式化为excel工作簿中的不同电子表格(每行可以是任意10种不同的记录类型,所以我解析并放置在适当的excel表中。)

对于较小尺寸的平面文件(10mb以下),解析器效果很好。但是,我正在尝试这个超过120mb(400k +行)的文件。在运行时,我会得到一个说明电子表格已满的OleDBException。现在我非常有信心Excel可以处理比平面文件更大的数据集。所以我认为这个例外不会给我真实的故事。

我打开一个连接,然后解析文件中的每一行,将每一行插入excel文件。我认为打开/关闭每个插入之间的连接是不好的性能。这会导致这个问题吗?任何想法我需要做什么来处理这么大的文件?有些情况下平面文件可能超过500mb。

要实际插入到excel中,我只是执行以下操作(我根据行的类型和解析的值构造一个sql查询):
Dim conn As New OleDbConnection()
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExportLocation.Text + "\" + importFileName + "-PVF.xls;Extended Properties=""Excel 8.0;HDR=YES"""
conn.Open()

Dim cmd1 As New OleDbCommand()
cmd1.Connection = conn

...解析器代码...

cmd1.CommandText = "INSERT INTO " + rowType + " values (" + currentRowString + ")"
cmd1.ExecuteNonQuery()

1 个答案:

答案 0 :(得分:3)

Excel 8.0与Excel 97相同,最多允许65,536行。你超过了这个。