これが私の問題です:
.NET MVCアプリでExcelファイルからデータを読み取っています。これは、Excelからすべてのデータを読み取り、各レコードをループして、レコードに含まれるデータをビジネスモデルに挿入することです。
すべてが完璧に機能します。ただし、Excelから取得すると、1つのフィールドが空の文字列を返す場合があることがわかりました。不思議なことに、このフィールドには、単純な文字列または配列として扱われる文字列(配列を構築するための「|」文字を含めることができます)を含めることができます。一部のExcelファイルでは、「|」のときにフィールドが空になります。charは存在し、存在しない場合は他の場所に存在し、この動作はそのファイル全体で一貫しています。
セパレータを受け取り、常に問題なく機能するフィールドは他にもあります。両方のフィールドの唯一の違いは、機能するフィールドは純粋な文字列であり、失敗するフィールドは可能性のある「|」を含む数字の文字列であるということです。それらを分離します。
区切り文字を変更して(同じ結果で「#」を試してみました)、セルをテキストとして具体的にフォーマットしようとしましたが、成功しませんでした。
これは、Excelからデータを抽出する方法です
private DataSet queryData(OleDbConnection objConn) {
string strConString = "SELECT * FROM [Hoja1$] WHERE NUMACCION <> ''";
OleDbCommand objCmdSelect = new OleDbCommand(strConString, objConn);
OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
objAdapter1.SelectCommand = objCmdSelect;
DataSet objDataset = new DataSet();
objAdapter1.Fill(objDataset, "ExcelData");
return objDataset;
}
私は最初にExcelからフィールドをチェックします:
fieldsDictionary.Add("Hours", table.Columns["HOURS"].Ordinal);
その後、DataSetをループするときに、次のコマンドでデータを抽出します。
string hourString = row.ItemArray[fieldsDictionary["Hours"]].ToString();
このhourStringは、一部のレコードでは空です。一部のExcelファイルでは、レコードに「|」が含まれている場合は空ですが、含まれていない場合は空です。両方のクラスのレコードで空を返すファイルをまだ見つけていません。
私はこれについてかなり混乱しています。フィールドデータの数値的な性質に関連している必要があることは確かですが、Excelファイルのセルを「テキスト」に強制すると解決しない理由を理解できません。
どんな助けでも大歓迎です。