读取锁定的Excel(.xlsx)文件,使用C#

时间:2012-06-04 00:01:14

标签: c# excel parsing

这是我读取上传的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文件得到了#34; StartDate"作为第一列。但是此列还包含员工姓名和日期(我需要阅读此员工姓名以处理此表)。

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

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

1 个答案:

答案 0 :(得分:1)

所以你说新的excel文件是问题?如果是的话......

  • 检查文件中的数据(特别是员工姓名列中的前8行)
  • 将数据从新文件复制到已知可用的文件

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