0

这是我读取上传的 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 在日期列中隐藏字符串?

4

1 回答 1

1

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

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

使用 C# 访问 Excel 电子表格偶尔会为某些单元格返回空白值 查看上面链接中 ABHI 的答案(特别是第 1 点和第 2 点。)

于 2012-06-04T01:48:43.753 回答