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”
詳細は「データ型」を参照してください。
画像はどのようにして挿入しますか?
- IXLWorksheet.AddPicture – ワークシートに画像を追加します
- 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