高山での使用でNPOI

高山での使用でNPOI

イントロ

.NETのコアアプリケーションがDotNetCore.NPOIも使用することができるため、多くの場合、2.4.0バージョンからエクセル、NPOIのインポートおよびエクスポートを行うために使用される。ネットNPOIは、.netstandard2.0をサポートするために始めました。

それは非常に迅速にパッケージやダウンロードのためにされているかどうかを画像サイズは、比較的小さいので、.NETのコアアプリケーションでは、特別な必要がある場合には、高山は、ミラーの最も適切な基礎のドッキングウィンドウのコンテナです。

使用NPOI輸出Excelの関数は、私のアプリケーションがNPOIにExcelエクスポートを使用して、ドッキングウィンドウのイメージが高山に基づいてドッキングウィンドウでK8Sに配備、私のasp.netのコアアプリケーションの一つであります

NPOIクロスプラットフォームの実装は頼りにSystem.Drawing.CommonSystem.Drawing.Commonlibgdiplusを達成するためにLinux上で、インストールする必要が依存しているlibgdiplusあなたがいない場合、正常に動作するためにlibgdiplus、次のような例外が発生します。

Linuxの System.Drawing.Common

sudo apt-get install libgdiplus libc6-dev
  • 高山にインストールされています libgdiplus

私は一般的に、ミラー自体が比較的小さいため、ダウンロードパッケージには、彼がいない場合は、高山libgdiplusにインストールすることができます何のために迅速かつ非常に便利な見ていないだろう、基本的なミラーなどの高山を選ぶ.netcoreパッケージドッキングウィンドウのミラーは、その後、私は変更しなければなりませんでしたミラーリング

Libgdiplusは、高山サイト上のパッケージで見つけhttps://pkgs.alpinelinux.org/packages?name=libgdiplus&branch=edge

目前仍处于测试阶段,还未正式发布,不过已经可以使用,可以通过下面的命令来在 alpine 上安装

apk add libgdiplus --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted

More

安装了 libgdiplus 之后,重新部署再导出测试一下,发现还是不行,现在爆的异常如下:

根据异常提示找到异常的源码 https://github.com/tonyqus/npoi/blob/master/main/SS/Util/SheetUtil.cs#L445

看异常提示以及代码应该是没有字体导致的异常,然后就在安装 libgdiplus 之后再安装一下字体,随便找了一个字体安装了,安装的是 terminus-font,装了字体之后再测试,就可以正常导出了~

使用的 Dockerfile ,完整 Dockerfile 见:https://github.com/WeihanLi/ActivityReservation/blob/dev/Dockerfile

FROM microsoft/dotnet:2.2-aspnetcore-runtime-alpine
RUN apk add libgdiplus --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted && \
    apk add terminus-font
# ...

Reference

おすすめ

転載: www.cnblogs.com/weihanli/p/use-npoi-in-docker-alpine.html