我有一个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()
答案 0 :(得分:3)
Excel 8.0与Excel 97相同,最多允许65,536行。你超过了这个。