README.md

# [LibXL](https://www.libxl.com/) elixir port

このモジュールを使用するにはLibXLのC言語ライブラリがインストールされていることが必須です。

* 必須ヘッダ

/usr/local/include または /usr/include

/usr/local/include/AutoFilterA.h または /usr/include/AutoFilterA.h

/usr/local/include/AutoFilterW.h または /usr/include/AutoFilterW.h

/usr/local/include/BookA.h または /usr/include/BookA.h

/usr/local/include/BookW.h または /usr/include/BookW.h

/usr/local/include/FilterColumnA.h または /usr/include/FilterColumnA.h

/usr/local/include/FilterColumnW.h または /usr/include/FilterColumnW.h

/usr/local/include/FontA.h または /usr/include/FontA.h

/usr/local/include/FontW.h または /usr/include/FontW.h

/usr/local/include/FormControlA.h または /usr/include/FormControlA.h

/usr/local/include/FormControlW.h または /usr/include/FormControlW.h

/usr/local/include/FormatA.h または /usr/include/FormatA.h

/usr/local/include/FormatW.h または /usr/include/FormatW.h

/usr/local/include/RichStringA.h または /usr/include/RichStringA.h

/usr/local/include/RichStringW.h または /usr/include/RichStringW.h

/usr/local/include/SheetA.h または /usr/include/SheetA.h

/usr/local/include/SheetW.h または /usr/include/SheetW.h

/usr/local/include/enum.h または /usr/include/enum.h

/usr/local/include/handle.h または /usr/include/handle.h

/usr/local/include/libxl.h または /usr/include/libxl.h

/usr/local/include/setup.h または /usr/include/setup.h

* 必須ライブラリ

/usr/local/lib/libxl.a または /usr/lib/libxl.a

/usr/local/lib/libxl.dylib または /usr/lib/libxl.dylib

/usr/local/lib/libxl.so または /usr/lib/libxl.so

# install

```elixir
def deps do
[
  {:elixir_libxl, "~> 0.1.0"}
]
end
```

# 基本的な使用方法

```elixir
book_handle = ElixirLibxl.xlCreateXMLBook()

ElixirLibxl.xlBookLoad(book_handle, "path/to/xlsx")

ElixirLibxl.xlBookRelease(book_handle)
```

# 注意点

* 定数はConstant.exに定義してありますが実際にコンパイルされた値ではないので注意してください。

* 出力用のポインタ引数の存在する関数は引数には含まずListとして、関数の戻り値と共にreturnされます。

  - 例

  `xlSheetMerge()`のC言語プロトタイプは`int xlSheetMerge(SheetHandle handle, int index, int* rowFirst, int* rowLast, int* colFirst, int* colLast);`

  となっていますが本モジュールでは`@spec xlSheetMerge(reference(), integer()) :: [integer()]`となります。