C# ACE oleDb驱动程序无法处理大型excel文件
ACE OLEDB驱动程序是否存在与较大文件相关的任何已知问题? 我正在使用以下代码检索400Mb xls文件中的工作表C# ACE oleDb驱动程序无法处理大型excel文件,c#,excel,oledbconnection,ms-jet-ace,oledbexception,C#,Excel,Oledbconnection,Ms Jet Ace,Oledbexception,ACE OLEDB驱动程序是否存在与较大文件相关的任何已知问题? 我正在使用以下代码检索400Mb xls文件中的工作表 public string[] GetWorkSheets() { var connectionString = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\"";
public string[] GetWorkSheets()
{
var connectionString = "Provider=Microsoft.ACE.OleDb.12.0; data source=c:\filepath\filename.xls; Extended Properties=\"Excel 8.0;IMEX=1;HDR=YES;\"";
DataTable dataTable;
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();//Exception thrown here for large files
dataTable = connection.GetSchema("Tables");
}
int lenght = dataTable.Rows.Count;
string[] worksheets = new string[lenght];
for (int i = 0; i < lenght; i++)
{
worksheets[i] = dataTable.Rows[i]["TABLE_NAME"].ToString();
}
return worksheets;
}
public字符串[]GetWorkSheets()
{
var connectionString=“Provider=Microsoft.ACE.OleDb.12.0;数据源=c:\filepath\filename.xls;扩展属性=\”Excel 8.0;IMEX=1;HDR=YES;\”;
数据表数据表;
使用(OLEDB连接=新OLEDB连接(connectionString))
{
connection.Open();//此处为大型文件引发异常
dataTable=connection.GetSchema(“表”);
}
int lenght=dataTable.Rows.Count;
字符串[]工作表=新字符串[长度];
对于(int i=0;i
我收到一个OLEDBEException,并显示消息“超出系统资源”。我不是在循环中调用这个函数,也不是在到达这里之前打开任何其他连接。这段代码适用于较小的文件
我的系统有4Gb内存。运行在64位Windows 7上。Ace驱动程序也是64位的
你知道如何解决这个问题吗?阅读本文
也许您的文件有超过1048576行乘以16384列?阅读本文
也许您的文件有超过1048576行乘以16384列?您使用的是ACE,所以我假设它是一个32位的平台。Win2k3 您是否在boot.ini中使用/3GB开关进行过尝试 进程和应用程序的虚拟地址空间仍然限制为2 GB,除非在Boot.ini文件中使用/3GB开关。
使用/3GB,您可以获得额外的1GB,这可能正好达到目的?您使用的是ACE,因此我假设它是一个32位的平台。Win2k3 您是否在boot.ini中使用/3GB开关进行过尝试 进程和应用程序的虚拟地址空间仍然限制为2 GB,除非在Boot.ini文件中使用/3GB开关。
使用/3GB,您可以额外获得一GB,这可能会起到作用?该文件是一个有效的excel文件…我可以在excel 97中很好地打开它您的文件中有多少列?该文件是一个有效的excel文件…我可以在excel 97中很好地打开它您的文件中有多少列?有些奇怪-我创建了一个大型excel文件,并且关闭了该文件,我得到了上面的错误,但是当文件打开时,代码运行时没有错误。我使用的计算机内存确实很小,而且打开文件后代码运行速度相当快。@Remou:可能是延迟加载/延迟刷新的情况?如果您试图复制..请告诉我您需要代码的哪一部分…我一直在胡乱处理,唯一能使其正常工作的方法是导入Access(Jet)并引用该文件。请注意,直到打开大型Excel文件,导入才起作用。奇怪的是,我创建了一个很大的Excel文件,当文件关闭时,我得到了上面的错误,但是当文件打开时,代码运行时没有错误。我使用的计算机内存确实很小,而且打开文件后代码运行速度相当快。@Remou:可能是延迟加载/延迟刷新的情况?如果您试图复制..请告诉我您需要代码的哪一部分…我一直在胡乱处理,唯一能使其正常工作的方法是导入Access(Jet)并引用该文件。请注意,直到打开大型Excel文件,导入才起作用。我在64位平台上…使用64位驱动程序。检查问题更新,我认为不应该有内存问题…上面的函数只是在64位平台上读取工作表IM的名称…使用64位驱动程序。检查问题更新,我认为不应该有内存问题…上面的函数只是读取工作表的名称