【VB.NET】ClosedXML:FAQ

MEMO
  • この記事は GitHub - ClosedXML - Wiki を参考に書かせていただいたものですが、C# から VB.NET への書き換えをし、英語から日本語へ翻訳しただけでなく、元記事の構成・コード・コメント等を変更している場合もありますのでご了承ください。
  • 現在 ClosedXML のメンテナンスをご担当されている Francois Botha 様からの掲載許可もいただいてます。
  • この記事のコードサンプルについては、Imports ClosedXML.Excel が宣言されていることを前提としています。
  • ClosedXML の作成者について:Francois Botha, Aleksei Pankratev, Manuel de Leon, Amir Ghezelbash
  • ClosedXML のライセンスについて:GitHub - ClosedXML - MIT License

Excel 2003 とそれ以前のフォーマットもサポートしてますか?

いいえ。ClosedXML がサポートしているのは Excel 2007/2010/2013 のフォーマット (.xlsx) のみです。

補足 by エレン・イースト

.xlsx であるならばとりあえず 2013 以降もサポートされていると考えられます。

また、.xlsm も大丈夫なようです。

数字付きのテキストが数字に変換されてしまう

セルの .Value プロパティをセットすると、ClosedXML はオブジェクトの .ToString メソッドを呼んで、値を数字、日付、ブール、タイムスタンプ、またはテキストとして解釈します。
数字をテキストとして挿入するには、次の方法があります。

  • アポストロフィを付ける:cell.Value = "'123"
  • SetValue を使う:cell.SetValue("123") 'SetValue は自動的な型変換をしません
  • 数字として挿入してからセルのデータ型をテキストに変更する:cell.SetValue(123).SetDataType(XLCellValues.Text)
  • 値を挿入する前にセルのフォーマットを "@" に設定する:
      cell.Style.NumberFormat.Format = "@"
      cell.Value = "123"

詳細は「データ型」を参照してください。

画像はどのようにして挿入しますか?

  1. IXLWorksheet.AddPicture - ワークシートに画像を追加します
  2. IXLPicture.MoveTo - 指定の位置に画像を移動します
Using wb As New XLWorkbook
    Dim ws = wb.AddWorksheet("Sheet1")

    Dim imagePath = "D:\test\pictures\pic1.jpg"

    Dim image = ws.AddPicture(imagePath)
    With image
        .MoveTo(ws.Cell("B3"))
        .Scale(0.5) '画像をリサイズ
    End With      

    wb.SaveAs("D:\test\file.xlsx")
End Using

画像の挿入は ClosedXML v0.88 から導入された機能です。

ASP.NET で Excel ファイルを配布するには

ASP.NET Web フォーム

'Workbook を作成
Dim workbook As XLWorkbook = New XLWorkbook
workbook.Worksheets.Add("Sample").Cell(1, 1).SetValue("Hello World")

'Response の用意
Dim httpResponse As HttpResponse = Response
httpResponse.Clear()
httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
httpResponse.AddHeader("content-disposition", "attachment;filename=""HelloWorld.xlsx""")

'Response.OutputStream に Workbook をフラッシュ
Using memoryStream As New System.IO.MemoryStream
  workbook.SaveAs(memoryStream)
  memoryStream.WriteTo(httpResponse.OutputStream)
  memoryStream.Close
End Using

httpResponse.End

 

「【VB.NET】ClosedXML の使い方」の一覧を表示

購読する
通知を受け取る対象
guest
0 Comments
Inline Feedbacks
View all comments