【问题标题】:Reading locked Excel (.xlsx) file, Using C#使用 C# 读取锁定的 Excel (.xlsx) 文件
【发布时间】:2012-06-04 00:01:14
【问题描述】:

这是我读取上传的 Excel 文件的代码。这在过去 3 个月内运行良好。

var connectionString = GetOleDbConnectionString(file);

using (var dataAdapter = new OleDbDataAdapter("select * from [Sheet1$]",         connectionString))
{
    dataAdapter.Fill(ds, tableCount.ToString());
}

private static string GetOleDbConnectionString(string file)
{
    var fileExtension = Path.GetExtension(file);

    if (fileExtension.EqualsCCIC(".xlsx"))
    {
        return @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;".F(file);
    }
}

问题:上传的 excel 文件将“StartDate”作为第一列。但是这一列也有员工姓名和日期(我需要阅读这个员工姓名来处理这张表)。

我发现了一个新的 Excel 文件 (Excel2007 .xlsx)。当我上传新文件(同时包含员工姓名和日期)时,它只是从列中读取日期并忽略员工姓名。我的数据集(在调试时)将数据表中的那些单元格显示为空字符串。根据业务逻辑,我需要知道这些日期属于哪个员工。我删除了整个工作表的锁(单元格格式>>保护>>锁),但仍然没有用。我怎么解决这个问题?我不知道...

它正在成功读取旧文件(2007 .xlsx)我不明白是什么让OLEDB在日期列中隐藏字符串?

【问题讨论】:

    标签: c# excel parsing


    【解决方案1】:

    所以你是说新的 excel 文件是问题所在?如果是这样……

    • 检查文件中的数据(尤其是员工姓名列的前8行)
    • 将新文件中的数据复制到已知可以工作的文件中

    Accessing Excel Spreadsheet with C# occasionally returns blank value for some cells 在上面的链接中查看 ABHI 的答案(特别是第 1 点和第 2 点)

    【讨论】:

    • 谢谢我刚刚修改了我的连接字符串。在扩展属性中包含 HDR=No;IMEX=1..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多