作成日: 2018/03/13 最終更新日: 2018/03/13
文書種別
使用方法
詳細
C1Excelには、保存するExcelファイルの「セルの書式」を直接指定してエクスポートする機能はありません。
C1Excelでのエクスポートの際には、セルスタイルのFormatプロパティに設定した文字列がMS Excelに「ユーザー定義」として渡され、通常はそのまま「セルの書式」に「ユーザー定義」と表示されます。
ただし、この文字列がMS Excel内の既定の「セルの書式」文字列と一致した時は、対応する書式名(例:「数値」、「文字列」など)が表示されます。この動作を利用し、C1ExcelのFormatに特定の文字列を設定して、Excelファイルに期待する「セルの書式」名として表示させることができます。
以下に、Excelファイルでそれぞれ数値、文字列、通貨と表示させるためのコードを記載します。
◎サンプルコード(VB)
◎サンプルコード(C#)
上記を含め、現時点で判明しているケースを以下に紹介します。
■Formatプロパティに文字列を直接設定した場合
(1)「数値型」と解釈されたケース
"0_ "
"0.00_ "
※ いずれも、「半角のアンダーバー」+「半角スペース」を設定
(2)「文字列」と解釈されたケース
"@"
(3)「パーセンテージ」と解釈されたケース
"0.00%"
(4)「通貨」と解釈されたケース
"#,0"
(5)「日付」と解釈されたケース
"yyyy/m/d;@" ' 短い日付
"[$-F800]dddd¥¥,¥¥ mmmm¥¥ dd¥¥,¥¥ yyyy" ' 長い日付 ※1
(6)「時刻」と解釈されたケース
"h:mm;@"
"[$-F400]h:mm:ss¥¥ AM/PM"
"[$-409]h:mm¥¥ AM/PM;@"
■XLStyleのFormatDotNetToXLメソッドを用いて設定した場合
(7)「通貨」と解釈されたケース
XLStyle.FormatDotNetToXL("N2", GetType(Decimal), CultureInfo.GetCultureInfo(1041)) ※2
(8)「パーセンテージ」と解釈されたケース
LStyle.FormatDotNetToXL("P2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
※1:日本語環境と英語環境では、長い日付の表示結果が異なります。
(例)日本語環境:2018年3月13日
英語環境 :13 March 2018
※2:セルに表示される数値には、通貨記号(¥)は付きません。
なおFormatを次のように設定することで、通貨記号を表示させることができます。
(書式には「ユーザー定義」と表示されます)
XLStyle.FormatDotNetToXL("C2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
このときGetCultureInfoを「1033」に設定すると、通貨記号が"$"になります。
C1Excelでのエクスポートの際には、セルスタイルのFormatプロパティに設定した文字列がMS Excelに「ユーザー定義」として渡され、通常はそのまま「セルの書式」に「ユーザー定義」と表示されます。
ただし、この文字列がMS Excel内の既定の「セルの書式」文字列と一致した時は、対応する書式名(例:「数値」、「文字列」など)が表示されます。この動作を利用し、C1ExcelのFormatに特定の文字列を設定して、Excelファイルに期待する「セルの書式」名として表示させることができます。
以下に、Excelファイルでそれぞれ数値、文字列、通貨と表示させるためのコードを記載します。
◎サンプルコード(VB)
Dim st1 As XLStyle = New XLStyle(Book)
Dim st2 As XLStyle = New XLStyle(Book)
Dim st3 As XLStyle = New XLStyle(Book)
' 数値
st1.Format = "0.00_ "
' 文字列
st2.Format = "@"
' 通貨
st3.Format = XLStyle.FormatDotNetToXL("N2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
Book.Sheets(0)(0, 0).Value = 12345.56
Book.Sheets(0)(0, 0).Style = st1
Book.Sheets(0)(1, 0).Value = "AAAAA"
Book.Sheets(0)(1, 0).Style = st2
Book.Sheets(0)(2, 0).Value = 12345
Book.Sheets(0)(2, 0).Style = st3
Book.Save("..¥..¥text.xlsx")
System.Diagnostics.Process.Start("..¥..¥text.xlsx")
Dim st2 As XLStyle = New XLStyle(Book)
Dim st3 As XLStyle = New XLStyle(Book)
' 数値
st1.Format = "0.00_ "
' 文字列
st2.Format = "@"
' 通貨
st3.Format = XLStyle.FormatDotNetToXL("N2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
Book.Sheets(0)(0, 0).Value = 12345.56
Book.Sheets(0)(0, 0).Style = st1
Book.Sheets(0)(1, 0).Value = "AAAAA"
Book.Sheets(0)(1, 0).Style = st2
Book.Sheets(0)(2, 0).Value = 12345
Book.Sheets(0)(2, 0).Style = st3
Book.Save("..¥..¥text.xlsx")
System.Diagnostics.Process.Start("..¥..¥text.xlsx")
◎サンプルコード(C#)
XLStyle st1 = new XLStyle(c1XLBook1);
XLStyle st2 = new XLStyle(c1XLBook1);
XLStyle st3 = new XLStyle(c1XLBook1);
// 数値
st1.Format = "0.00_ ";
// 文字列
st2.Format = "@";
// 通貨
st3.Format = XLStyle.FormatDotNetToXL("N2", typeof(Decimal), CultureInfo.GetCultureInfo(1041));
c1XLBook1.Sheets[0][0, 0].Value = 12345.56;
c1XLBook1.Sheets[0][0, 0].Style = st1;
c1XLBook1.Sheets[0][1, 0].Value = "AAAAA";
c1XLBook1.Sheets[0][1, 0].Style = st2;
c1XLBook1.Sheets[0][2, 0].Value = 12345;
c1XLBook1.Sheets[0][2, 0].Style = st3;
c1XLBook1.Save(@"..¥..¥text.xlsx");
System.Diagnostics.Process.Start(@"..¥..¥text.xlsx");
XLStyle st2 = new XLStyle(c1XLBook1);
XLStyle st3 = new XLStyle(c1XLBook1);
// 数値
st1.Format = "0.00_ ";
// 文字列
st2.Format = "@";
// 通貨
st3.Format = XLStyle.FormatDotNetToXL("N2", typeof(Decimal), CultureInfo.GetCultureInfo(1041));
c1XLBook1.Sheets[0][0, 0].Value = 12345.56;
c1XLBook1.Sheets[0][0, 0].Style = st1;
c1XLBook1.Sheets[0][1, 0].Value = "AAAAA";
c1XLBook1.Sheets[0][1, 0].Style = st2;
c1XLBook1.Sheets[0][2, 0].Value = 12345;
c1XLBook1.Sheets[0][2, 0].Style = st3;
c1XLBook1.Save(@"..¥..¥text.xlsx");
System.Diagnostics.Process.Start(@"..¥..¥text.xlsx");
上記を含め、現時点で判明しているケースを以下に紹介します。
■Formatプロパティに文字列を直接設定した場合
(1)「数値型」と解釈されたケース
"0_ "
"0.00_ "
※ いずれも、「半角のアンダーバー」+「半角スペース」を設定
(2)「文字列」と解釈されたケース
"@"
(3)「パーセンテージ」と解釈されたケース
"0.00%"
(4)「通貨」と解釈されたケース
"#,0"
(5)「日付」と解釈されたケース
"yyyy/m/d;@" ' 短い日付
"[$-F800]dddd¥¥,¥¥ mmmm¥¥ dd¥¥,¥¥ yyyy" ' 長い日付 ※1
(6)「時刻」と解釈されたケース
"h:mm;@"
"[$-F400]h:mm:ss¥¥ AM/PM"
"[$-409]h:mm¥¥ AM/PM;@"
■XLStyleのFormatDotNetToXLメソッドを用いて設定した場合
(7)「通貨」と解釈されたケース
XLStyle.FormatDotNetToXL("N2", GetType(Decimal), CultureInfo.GetCultureInfo(1041)) ※2
(8)「パーセンテージ」と解釈されたケース
LStyle.FormatDotNetToXL("P2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
※1:日本語環境と英語環境では、長い日付の表示結果が異なります。
(例)日本語環境:2018年3月13日
英語環境 :13 March 2018
※2:セルに表示される数値には、通貨記号(¥)は付きません。
なおFormatを次のように設定することで、通貨記号を表示させることができます。
(書式には「ユーザー定義」と表示されます)
XLStyle.FormatDotNetToXL("C2", GetType(Decimal), CultureInfo.GetCultureInfo(1041))
このときGetCultureInfoを「1033」に設定すると、通貨記号が"$"になります。
旧文書番号
82571