【解決方法】パーセンテージ列を文字列としてデータテーブルに読み込む方法


こんにちはチーム、

を使用してExcelファイルをデータテーブルに変換しています

ExcelReaderFactory

. 問題は、パーセンテージ列が自動的に数値に変換されることです。 Excel にある正確な形式が必要です。

以下は Excel 形式のように仮定します。

CYear	LYear
8.32%	19.43%
7.72%	6.54%

データテーブルに変換した後、値
以下のように

CYear	LYear
0.0832	0.1943
0.0772 0.0654

ただし、以下のような正確な値が必要です(データベースに保存する前に、C# で % を置き換えます)

CYear	LYear
8.32	19.43
7.72	6.54

注: Excel ファイルの列は動的になります。 列名がわからないため、コードで手動でパーセンテージに変換できませんでした。

前もって感謝します、
スキン

私が試したこと:

var stream = File.Open(file.FullName, FileMode.Open, FileAccess.Read);
               var reader =  ExcelReaderFactory.CreateOpenXmlReader(stream);

               var input = reader.AsDataSet(new ExcelDataSetConfiguration()
               {
                   UseColumnDataType = false,

                   FilterSheet = (tableReader, sheetIndex) => tableReader.VisibleState == "visible",
                   ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
                   {
                       UseHeaderRow = true,
                       FilterRow = (rowReader) =>
                       {
                           int progress = (int)Math.Ceiling((decimal)rowReader.Depth / (decimal)rowReader.RowCount * (decimal)100);
                           return true;
                       }
                   }
               });

解決策 1

Excel の値は取得した値です。シートの列 (またはセル) に「パーセンテージ」という形式が適用されているだけです。 これをテストするには、シートを編集し、セルを強調表示して右クリックします。 「セルの書式設定」を選択すると、選択された表示モードが表示されます。

データを DataTable にインポートする場合、データには表示形式が含まれないため、DB に送信する前にすべての値を手動で 100 倍する必要があります。

「%」文字を含むように文字列に変換しないでください。変換すると、DB データを他のデータの数学演算に直接使用できなくなります。

自分? Excel の値と同じままにして、DB 用に値を変更するのではなく、再度ユーザーに提示するときにパーセンテージ情報を適用します。

コメント

タイトルとURLをコピーしました