私の問題は、データ型をC#のExcel列(この場合はデータ型の数値、テキスト、日付)に設定しようとしていることです。私はDLL Microsoft.Office.Interop.Excelを使用しています。C#はプログラミング言語を使用してExcel列全体のセルにこれらの形式を設定する方法がわかりません。
範囲をテキストに設定するには:
xlYourRange.NumberFormat = "@";
セルに入れた値の前にアポストロフィを付けて、テキストとしてフォーマットすることもできます。
xlYourRange.Value = "'0123456";
範囲を数値に設定するには
xlYourRange.NumberFormat = "0";
明らかに列全体にフォーマットを設定したい場合、範囲は列になります。
xlYourRange = xlWorksheet.get_Range("A1").EntireColumn;
編集:
日付はもう少し複雑で、地域の設定にも依存します。
// Results in a Date field of "23/5/2011"
xlRange.NumberFormat = "DD/MM/YYYY";
xlRange.Value = "23/5/2011";
// Results in a Custom field of "23/5/2011"
xlRange.NumberFormat = "DD-MM-YYYY";
xlRange.Value = "23/5/2011";
// Results in a Custom field of "05/23/2011"
xlRange.NumberFormat = "MM/DD/YYYY";
xlRange.Value = "5/23/2011";
// Results in a Custom field of "05-23-2011"
xlRange.NumberFormat = "MM-DD-YYYY";
xlRange.Value = "5/23/2011";
// Results in a Date field of "23/05/2011"
xlRange.NumberFormat = "DD/MM/YYYY";
xlRange.Value = "5/23/2011";
// Results in a Custom field of "23-05-2011"
xlRange.NumberFormat = "DD-MM-YYYY";
xlRange.Value = "5/23/2011";
// Results in a Custom field of "23/5/2011"
xlRange.NumberFormat = "MM/DD/YYYY";
xlRange.Value = "23/5/2011";
// Results in a Custom field of "23/5/2011"
xlRange.NumberFormat = "MM-DD-YYYY";
xlRange.Value = "23/5/2011";
はい、日付形式ではすべてがより複雑です-Sid Hollandが言及したよりもさらに複雑です。その理由は、ローカライズの問題にあります。たとえば、Windowsシステムがロシア語にローカライズされている場合、「ДД.MM.ГГГГ」や「ГГГГ-MM-ДД」などの日付形式のロシア文字を使用する必要があります。したがって、抽出して適用できるはずです。これらの手紙。ここで多かれ少なかれ完全な説明と解決策を参照してください: https://stackoverflow.com/a/35418176/2199512
しばらく前に私がこれについて尋ねた質問に対する答えがあります。
最も注目すべきは、この男が彼の答えで使用するデータ型は次のとおりです。
private struct ExcelDataTypes
{
public const string NUMBER = "NUMBER";
public const string DATETIME = "DATETIME";
public const string TEXT = "TEXT"; // also works with "STRING".
}
見覚えがあります?
興味があるなら、ここにリンクがあります: