GridView にバインドするために、Excel シート データをデータ テーブルに読み込もうとしています。私のExcelシートには次のようなデータが含まれています。
ID Value1 Value2
-------------------------------------------------
1 $312976.97530297 $30790.0614862584
etc
次のコードを使用して、値をデータテーブルに読み取ります。
DataTable table = new DataTable();
string filePath = @"D:\Book1.xlsx";
string strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text\"", filePath);
using (OleDbConnection dbConnection = new OleDbConnection(strConn))
{
using (OleDbDataAdapter dbAdapter = new OleDbDataAdapter("SELECT ID, value1,value2 FROM [Sheet1$]", dbConnection))
dbAdapter.Fill(table);
}
問題: value1 と value2 には $ 記号が含まれているため、dataAdaptor は両方の値を完全な精度なしで取得します。312976.97530297 の代わりに、312976.9753 のみが返されます。
Note:
1. I cannot change the input Excel sheet since the enduser will upload it to the web site.
2. If i remove the $ symbol in the excel sheet, it will return the full precision, but $ also present in the input sheet.
3. I tried using Microsoft.Office.Interop.Excel and its working, but the performance is very low.
Or I can format all the excel cell as Text/General type before filling to the datatable, Anyone knows how to do that?
OleDbDataAdapter を使用した方法を 1 つ提案してください。
前もってありがとう、ウィルソン。