まず、私はここで深海に出ていると言いたいです。なぜなら、OleDbDataAdapterを使用してExcelと「対話」するために、社内の他の誰かによって作成されたコードにいくつかの変更を加えているだけで、慣れていないからです。それと。そこには私がたどることができないバグが1つあります。
OleDbDataAdapterを使用して、約450行のExcelファイルを読み込もうとしています。
コードでは、次のように実行されます。
connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"");
connection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection);
objAdapter.Fill(objDataSet, "Excel");
foreach (DataColumn dataColumn in objTable.Columns) {
if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count - 1) {
objDataSet.Tables[0].Columns.Add();
}
objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName;
objImport.Columns.Add(dataColumn.ColumnName);
}
foreach (DataRow dataRow in objDataSet.Tables[0].Rows) {
...
}
1つを除いて、すべてが正常に機能しているようです。2番目の列は6739、3920などのほとんど4桁の数字で埋められますが、5行目は8201NOや8205NOのような英数字の値になります。これらの5つのセルは、英数字の内容ではなく空白の内容であると報告されています。Excelをチェックインしました。この列のすべてのセルは、テキストとしてマークされています。
ちなみにこれはxlsファイルであり、xlsxではありません。
これらのセルがDataRowで空白として表示されているのに、数値のセルは正常に表示されている理由について、誰かが手がかりを持っていますか?英数字の内容が適切に表示されている他の列があります。