LoginSignup
5
1

D言語でのExcel(.xlsx)ファイルの作り方

Posted at

はじめに

この記事では、Excel(.xlsx)ファイルをD言語で作成する方法について、書きます。
dubパッケージを作成する際に、エラーが発生した場合の回避策についても、情報提供します。
※エラーはWindows環境でVisual StudioMSBuild)を使用した場合に発生しました。

XLSXファイルを作成するためのdubパッケージ

以下のdubパッケージが提供されています。
dexcel
xlsxd
xlsxio-d
xlsxwriter

この記事では、xlsxdを使用します。

開発環境

xlsxdパッケージは、内部でlibxlsxwriterを利用しています。
libxlsxwriterをビルドするために、Visual Studioが必要になります。

xlsxd、libxlsxwriterのビルド

xlsxdパッケージを作成する際に、下記エラーが発生しました。
libxlsxwriterのビルド処理でエラーとなり、xlsxwriter.libが生成されないのが原因です。

コマンドプロンプト
D:\Dev> dub build --build=release --single writeexcel.d
    Fetching xlsxd 4.0.4 (getting selected version)
    Starting Performing "release" build using D:\App\Dev\dmd2\windows\bin64\dmd.exe for x86_64.
    Building xlsxd 4.0.4: building configuration [library]
   Pre-build Running commands
x64 libxlsxwriter does not exist
'cmake' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\source\libxlsxd\worksheet.d(208,14): Deprecation: reference to local variable `this` assigned to non-scope parameter `wsf` calling `this`
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\source\libxlsxd\worksheet.d(212,17): Deprecation: reference to local variable `this` assigned to non-scope parameter `wsf` calling `this`
    Building writeexcel ~master: building configuration [application]
     Linking writeexcel
LINK : fatal error LNK1104: ファイル 'xlsxwriter.lib' を開くことができません。
Error: linker exited with status 1104
Error D:\App\Dev\dmd2\windows\bin64\dmd.exe failed with exit code 1.

まずは、libxlsxwriterのビルドを先に進めます。
Developer Command Prompt for VS 2022を立ち上げます。

ビルドを実行するとC:\Users\ユーザ名\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriterbuild_x64というディレクトリが作成されます。
再ビルド時にbuild_x64ディレクトリが存在するとエラーになるため、削除します。

Developer Command Prompt for VS 2022(ビルド失敗例1)
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd> windepbuild.bat x64
x64 libxlsxwriter does not exist
サブディレクトリまたはファイル build_x64 は既に存在します。

Developer Command Prompt for VS 2022(ビルド失敗例2)
Developer Command Prompt for VS 2022(ビルド失敗例2)
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd> windepbuild.bat x64
x64 libxlsxwriter does not exist
-- Building for: Visual Studio 17 2022
CMake Deprecation Warning at CMakeLists.txt:88 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.38.33130.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- The CXX compiler identification is MSVC 19.38.33130.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (16.0s)
-- Generating done (0.1s)
-- Build files have been written to: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/libxlsxwriter/build_x64
MSBuild のバージョン 17.8.3+195e7f5a3 (.NET Framework)

  1>Checking Build System
  Building Custom Rule C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/libxlsxwriter/CMakeLists.txt
  app.c
  chart.c
  chartsheet.c
  content_types.c
  core.c
  custom.c
  drawing.c
  format.c
  hash_table.c
  packager.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/app.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/app.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/chartsheet.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/core.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/core.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/packager.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/packager.c' をコンパイルしています)

  relationships.c
  shared_strings.c
  styles.c
  theme.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(1,1): warning C4819: ファイルは、 現在のコード
 ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.
0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  utility.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,65): error C2059: 構文エラー: '>' [
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,66): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(40,56): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(41,68): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(73,66): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(74,56): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(75,68): error C2001: 定数が 2 行目に続いて
います。 [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/utility.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/utility.c' をコンパイルしています)

  workbook.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/workbook.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/workbook.c' をコンパイルしています)

  worksheet.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/worksheet.c' をコンパイルしています)

  xmlwriter.c
  ioapi.c
  zip.c
  コードを生成中...
  コンパイル中...
  iowin32.c
  tmpfileplus.c
  コードを生成中...

ビルド失敗例2では、theme.cでエラーが出ています。
ソースコードの中身を見ると、韓国文字と中国文字が混ざったUTF-8ファイルでこのあたりの文字コードをMSBuildが正しく処理できないようです。

theme.c(抜粋)
    "<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>",
    "<a:font script=\"Hans\" typeface=\"宋体\"/>",
    "<a:font script=\"Hant\" typeface=\"新細明體\"/>",

対処方法として、theme.cVisual StudioCコンパイラが対応しているファイル形式(BOM付きのUTF-8)に保存しなおします。

その後、再ビルドを実行するとうまくいきました。

Developer Command Prompt for VS 2022(ビルド成功例)
Developer Command Prompt for VS 2022(ビルド成功例)
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd>windepbuild.bat x64
x64 libxlsxwriter does not exist
-- Building for: Visual Studio 17 2022
CMake Deprecation Warning at CMakeLists.txt:88 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.38.33130.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- The CXX compiler identification is MSVC 19.38.33130.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.38.33130/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (11.4s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/libxlsxwriter/build_x64
MSBuild のバージョン 17.8.3+195e7f5a3 (.NET Framework)

  1>Checking Build System
  Building Custom Rule C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/libxlsxwriter/CMakeLists.txt
  app.c
  chart.c
  chartsheet.c
  content_types.c
  core.c
  custom.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/app.c' をコンパイルしています)

  drawing.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/app.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/chartsheet.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/core.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/core.c' をコンパイルしています)

  format.c
  hash_table.c
  packager.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/packager.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/packager.c' をコンパイルしています)

  relationships.c
  shared_strings.c
  styles.c
  theme.c
  utility.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,5): warning C4566: ユニバーサル文字名 '
\uB9D1' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,5): warning C4566: ユニバーサル文字名 '
\uC740' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,5): warning C4566: ユニバーサル文字名 '
\uACE0' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(39,5): warning C4566: ユニバーサル文字名 '
\uB515' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(73,5): warning C4566: ユニバーサル文字名 '
\uB9D1' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(73,5): warning C4566: ユニバーサル文字名 '
\uC740' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(73,5): warning C4566: ユニバーサル文字名 '
\uACE0' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\src\theme.c(73,5): warning C4566: ユニバーサル文字名 '
\uB515' によって表示されている文字は、現在のコード ページ (932) で表示できません [C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwr
iter\build_x64\xlsxwriter.vcxproj]
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/utility.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/utility.c' をコンパイルしています)

  workbook.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/workbook.c' をコンパイルしています)

C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\workbook.h(815,1): warning
 C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\d
ub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/workbook.c' をコンパイルしています)

  worksheet.c
C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\include\xlsxwriter\worksheet.h(1,1): warning
C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 [C:\Users\user1\AppData\Local\du
b\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\xlsxwriter.vcxproj]
  (ソース ファイル '../src/worksheet.c' をコンパイルしています)

  xmlwriter.c
  ioapi.c
  zip.c
  コードを生成中...
  コンパイル中...
  iowin32.c
  tmpfileplus.c
  コードを生成中...
  xlsxwriter.vcxproj -> C:\Users\user1\AppData\Local\dub\packages\xlsxd\4.0.4\xlsxd\libxlsxwriter\build_x64\Release\xls
  xwriter.lib
  Building Custom Rule C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/libxlsxwriter/CMakeLists.txt
  1>
  -- Install configuration: "Release"
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/lib/x64/Release/
  xlsxwriter.lib
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/lib/x64/Release/
  xlsxwriter.pdb
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/app.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/chart.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/chartsheet.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/common.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/content_types.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/core.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/custom.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/drawing.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/format.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/hash_table.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/packager.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/relationships.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/shared_strings.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/styles.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/theme.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party/ioapi.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party/queue.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party/tmpfileplus.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party/tree.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/third_party/zip.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/utility.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/workbook.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/worksheet.h
  -- Installing: C:/Users/user1/AppData/Local/dub/packages/xlsxd/4.0.4/xlsxd/install_dir/libxlsxwriter/include/xlsxwrit
  er/xmlwriter.h

D言語でのソースコード実装例

Excelファイルを作成するための実装例です。

writeexcel.d
/+ dub.sdl:
    name "writeexcel"
    dependency "xlsxd" version="~>4.0.4"
+/
// dub build --build=release --single writeexcel.d
import std.stdio;
import libxlsxd;

void main(string[] args)
{
	writeExcel();
}

void writeExcel()
{
	auto workbook  = newWorkbook("test1.xlsx");
	auto worksheet = workbook.addWorksheet(null);
	
	/* Add a format. */
	auto format = workbook.addFormat();
	
	/* Set the bold property for the format */
	format.setBold();
	
	/* Change the column width for clarity. */
	worksheet.setColumn(0, 0, 20);
	
	/* Write some simple text. */
	worksheet.writeString(0, 0, "Hello");
	
	/* Text with formatting. */
	worksheet.writeString(1, 0, "World", format);
	
	/* Write some numbers. */
	worksheet.writeNumber(2, 0, 123);
	worksheet.writeNumber(3, 0, 123.456);
	
	// for the lazy
	worksheet.write(4, 0, 13.37);
	// for the lazy
	worksheet.write(4, 1, true);
	
	worksheet.write(4, 2, "Hello 1337");
	worksheet.setColumn(4, 2, 20.0);
}

コンパイルと実行結果

いつも通り、コンパイルと実行結果を記します。

コンパイル例
D:\Dev> dub build --build=release --single writeexcel.d
    Starting Performing "release" build using D:\App\Dev\dmd2\windows\bin64\dmd.exe for x86_64.
  Up-to-date xlsxd 4.0.4: target for configuration [library] is up to date.
    Building writeexcel ~master: building configuration [application]
     Linking writeexcel
    Finished To force a rebuild of up-to-date targets, run again with --force

実行結果
D:\Dev> writeexcel

作成されたtest1.xlsxのイメージ
excel2.png

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1