# NPOI [![NuGet](https://img.shields.io/nuget/v/DotNetCore.NPOI.svg)](https://www.nuget.org/packages/DotNetCore.NPOI) [![Build status](https://ci.appveyor.com/api/projects/status/k774la3yfxf0yfv8?svg=true)](https://ci.appveyor.com/project/yuleyule66/npoi) This project is migrated from Tony Qu's [NPOI](https://github.com/tonyqus/npoi) by .NET Core Community. ## Install NuGet Package ```powershell Install-Package DotNetCore.NPOI ``` ## How can it work on Linux? On Linux, you need install `libgdiplus`. Since 1.2.0 libdl is also required. - Ubuntu 16.04 and above: - apt-get install libgdiplus libc6-dev - cd /usr/lib - ln -s libgdiplus.so gdiplus.dll - Fedora 23 and above: - dnf install libgdiplus - cd /usr/lib64/ - ln -s libgdiplus.so.0 gdiplus.dll - CentOS 7 and above: - yum install autoconf automake libtool - yum install freetype-devel fontconfig libXft-devel - yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel - yum install glib2-devel cairo-devel - git clone - cd libgdiplus - ./autogen.sh - make - make install - cd /usr/lib64/ - ln -s /usr/local/lib/libgdiplus.so gdiplus.dll - Docker - Alpine ``` # base sdk-alpine/aspnetcore-runtime-alpine images RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories RUN apk --update add libgdiplus ``` - Debian ``` FROM microsoft/dotnet:2.1-aspnetcore-runtime RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll ... ``` ## Getting Started ### Export Excel ```csharp var newFile = @"newbook.core.xlsx"; using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write)) { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1"); sheet1.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10)); var rowIndex = 0; IRow row = sheet1.CreateRow(rowIndex); row.Height = 30 * 80; row.CreateCell(0).SetCellValue("this is content"); sheet1.AutoSizeColumn(0); rowIndex++; var sheet2 = workbook.CreateSheet("Sheet2"); var style1 = workbook.CreateCellStyle(); style1.FillForegroundColor = HSSFColor.Blue.Index2; style1.FillPattern = FillPattern.SolidForeground; var style2 = workbook.CreateCellStyle(); style2.FillForegroundColor = HSSFColor.Yellow.Index2; style2.FillPattern = FillPattern.SolidForeground; var cell2 = sheet2.CreateRow(0).CreateCell(0); cell2.CellStyle = style1; cell2.SetCellValue(0); cell2 = sheet2.CreateRow(1).CreateCell(0); cell2.CellStyle = style2; cell2.SetCellValue(1); workbook.Write(fs); } ``` ### Export Word ```csharp var newFile2 = @"newbook.core.docx"; using (var fs = new FileStream(newFile2, FileMode.Create, FileAccess.Write)) { XWPFDocument doc = new XWPFDocument(); var p0 = doc.CreateParagraph(); p0.Alignment = ParagraphAlignment.CENTER; XWPFRun r0 = p0.CreateRun(); r0.FontFamily = "microsoft yahei"; r0.FontSize = 18; r0.IsBold = true; r0.SetText("This is title"); var p1 = doc.CreateParagraph(); p1.Alignment = ParagraphAlignment.LEFT; p1.IndentationFirstLine = 500; XWPFRun r1 = p1.CreateRun(); r1.FontFamily = "·ÂËÎ"; r1.FontSize = 12; r1.IsBold = true; r1.SetText("This is content, content content content content content content content content content"); doc.Write(fs); } ```