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" を取得しました。ただし、この列には従業員名と日付も含まれています (このシートを処理するには、この従業員名を読み取る必要があります)。

1 つの新しい Excel ファイル (Excel2007 .xlsx) に出会いました。新しいファイル (従業員名と日付の両方を含む) をアップロードすると、列から日付のみが読み取られ、従業員名は無視されます。(デバッグ中に) データ テーブル内のセルを空の文字列として表示するデータセット。ビジネス ロジックによると、これらの日付がどの従業員に属しているかを知る必要があります。シート全体のロックを解除しました(セルの書式設定>>保護>>ロック)が、まだ使用されていません。どうすればこの問題を解決できますか? 私は見当もつかない...

古いファイル (2007 .xlsx) を正常に読み取っています

4

1 に答える 1

1

新しいExcelファイルが問題だと言っているのですか?もしそうなら...

  • ファイル内のデータを確認します (特に、従業員名列の最初の 8 行)。
  • 新しいファイルから動作することがわかっているファイルにデータをコピーする

C# を使用して Excel スプレッドシートにアクセスすると、一部のセルで空白の値が返されることがあります 上記のリンクで ABHI の回答を確認してください (特にポイント 1. と 2.)。

于 2012-06-04T01:48:43.753 に答える