私はEPPlusを使用しており、ワークブックの各ワークシートのすべての列を反復処理しています。私は、数値フォーマットとして "NUMBER"という単語を含むヘッダーで各列をフォーマットしようとしています。それは実行され、数値書式を設定するブレークポイントに当たっていますが、スプレッドシートを開くと、列はまだテキストとして書式設定されています。どんな助けでも大歓迎です。Epplusを使用して特定の列を構成していない
private void cleanSpreadSheet(string fileName)
{
// set all columns with a header of number to numeric type
FileInfo existingFile = new FileInfo(fileName);
var package = new ExcelPackage(existingFile);
ExcelWorkbook wb = package.Workbook;
foreach (ExcelWorksheet workSheet in wb.Worksheets)
{
var start = workSheet.Dimension.Start;
var end = workSheet.Dimension.End;
for (int col = start.Column; col <= end.Column; col++)
{ // col by col
if (workSheet.Cells[1, col].Text.ToUpper().Contains("NUMBER"))
{
workSheet.Column(col).Style.Numberformat.Format = "0";
}
}
}
package.Save();
package.Dispose();
wb.Dispose();
}
あなたがオブジェクトでのDisposeを呼び出す必要がある場合、それはコードのにおいです。おそらく、[usingステートメント](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-statement)を使用しているはずです。 – mason
私はあなたがしたいと思うのは、フォーマットを設定するのではなく、列のデータ型を設定することです。私はEPPlusが、行の値を同じに設定しているオブジェクトのタイプに基づいていると判断します。例については、[私の質問](https://stackoverflow.com/questions/23816043/epplus-date-cell-datatype-not-working)を参照してください。 – mason
既存のワークブックのセルの内容が「テキスト」の場合、@masonの説明に基づいて拡張するには、おそらくint.Parse/double.Parseを実行し、セルの内容を「Numbers」 – sfm