C# ACE oleDb驱动程序无法处理大型excel文件

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;\"";

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;\"";
    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位驱动程序。检查问题更新,我认为不应该有内存问题…上面的函数只是读取工作表的名称