.NET Core首例Office开源跨平台组件NPOI Core怎么用

发布时间:2021-12-29 19:44:36 作者:柒染
来源:亿速云 阅读:303

.NET Core首例Office开源跨平台组件NPOI Core怎么用

引言

在.NET Core的生态系统中,处理Office文档的需求一直存在。虽然.NET Core本身并不直接支持Office文档的读写,但通过开源组件NPOI Core,我们可以轻松地在跨平台环境中处理Excel、Word等Office文档。本文将详细介绍NPOI Core的使用方法,帮助开发者快速上手。

什么是NPOI Core?

NPOI Core是NPOI项目的.NET Core版本,它是一个开源的、跨平台的Office文档处理库。NPOI Core支持Excel、Word、PowerPoint等文档的读写操作,并且可以在Windows、Linux和macOS等平台上运行。

安装NPOI Core

首先,我们需要在项目中安装NPOI Core。可以通过NuGet包管理器来安装:

dotnet add package NPOI

安装完成后,我们就可以在项目中使用NPOI Core了。

创建和写入Excel文件

创建一个简单的Excel文件

以下是一个简单的示例,展示如何使用NPOI Core创建一个Excel文件并写入数据。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的工作簿
        IWorkbook workbook = new XSSFWorkbook();
        // 创建一个工作表
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建一行
        IRow row = sheet.CreateRow(0);
        // 创建单元格并设置值
        row.CreateCell(0).SetCellValue("Hello");
        row.CreateCell(1).SetCellValue("World");

        // 将工作簿写入文件
        using (FileStream fs = new FileStream("example.xlsx", FileMode.Create, FileAccess.Write))
        {
            workbook.Write(fs);
        }
    }
}

解释代码

  1. 创建WorkbookIWorkbook workbook = new XSSFWorkbook(); 创建一个新的Excel工作簿。
  2. 创建SheetISheet sheet = workbook.CreateSheet("Sheet1"); 在工作簿中创建一个名为“Sheet1”的工作表。
  3. 创建Row和CellIRow row = sheet.CreateRow(0); 在工作表中创建一行,row.CreateCell(0).SetCellValue("Hello"); 在行中创建单元格并设置值。
  4. 写入文件workbook.Write(fs); 将工作簿写入文件。

读取Excel文件

读取Excel文件中的数据

以下是一个示例,展示如何使用NPOI Core读取Excel文件中的数据。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 打开Excel文件
        using (FileStream fs = new FileStream("example.xlsx", FileMode.Open, FileAccess.Read))
        {
            // 加载工作簿
            IWorkbook workbook = new XSSFWorkbook(fs);
            // 获取第一个工作表
            ISheet sheet = workbook.GetSheetAt(0);

            // 遍历行
            for (int rowIndex = 0; rowIndex <= sheet.LastRowNum; rowIndex++)
            {
                IRow row = sheet.GetRow(rowIndex);
                if (row != null)
                {
                    // 遍历单元格
                    for (int cellIndex = 0; cellIndex < row.LastCellNum; cellIndex++)
                    {
                        ICell cell = row.GetCell(cellIndex);
                        if (cell != null)
                        {
                            // 输出单元格的值
                            Console.Write(cell.ToString() + "\t");
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
    }
}

解释代码

  1. 打开文件using (FileStream fs = new FileStream("example.xlsx", FileMode.Open, FileAccess.Read)) 打开Excel文件。
  2. 加载工作簿IWorkbook workbook = new XSSFWorkbook(fs); 加载工作簿。
  3. 获取工作表ISheet sheet = workbook.GetSheetAt(0); 获取第一个工作表。
  4. 遍历行和单元格:通过sheet.LastRowNumrow.LastCellNum遍历行和单元格,并输出单元格的值。

处理Word文档

创建一个简单的Word文档

以下是一个示例,展示如何使用NPOI Core创建一个Word文档并写入内容。

using NPOI.XWPF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的Word文档
        XWPFDocument document = new XWPFDocument();

        // 创建一个段落
        XWPFParagraph paragraph = document.CreateParagraph();
        // 创建一个运行
        XWPFRun run = paragraph.CreateRun();
        // 设置文本内容
        run.SetText("Hello, World!");

        // 将文档写入文件
        using (FileStream fs = new FileStream("example.docx", FileMode.Create, FileAccess.Write))
        {
            document.Write(fs);
        }
    }
}

解释代码

  1. 创建DocumentXWPFDocument document = new XWPFDocument(); 创建一个新的Word文档。
  2. 创建ParagraphXWPFParagraph paragraph = document.CreateParagraph(); 在文档中创建一个段落。
  3. 创建RunXWPFRun run = paragraph.CreateRun(); 在段落中创建一个运行。
  4. 设置文本run.SetText("Hello, World!"); 设置运行的文本内容。
  5. 写入文件document.Write(fs); 将文档写入文件。

读取Word文档

读取Word文档中的内容

以下是一个示例,展示如何使用NPOI Core读取Word文档中的内容。

using NPOI.XWPF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 打开Word文档
        using (FileStream fs = new FileStream("example.docx", FileMode.Open, FileAccess.Read))
        {
            // 加载文档
            XWPFDocument document = new XWPFDocument(fs);

            // 遍历段落
            foreach (XWPFParagraph paragraph in document.Paragraphs)
            {
                // 输出段落文本
                Console.WriteLine(paragraph.Text);
            }
        }
    }
}

解释代码

  1. 打开文件using (FileStream fs = new FileStream("example.docx", FileMode.Open, FileAccess.Read)) 打开Word文档。
  2. 加载文档XWPFDocument document = new XWPFDocument(fs); 加载文档。
  3. 遍历段落foreach (XWPFParagraph paragraph in document.Paragraphs) 遍历文档中的段落,并输出段落文本。

处理Excel样式

设置单元格样式

以下是一个示例,展示如何使用NPOI Core设置Excel单元格的样式。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的工作簿
        IWorkbook workbook = new XSSFWorkbook();
        // 创建一个工作表
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建一行
        IRow row = sheet.CreateRow(0);
        // 创建单元格并设置值
        ICell cell = row.CreateCell(0);
        cell.SetCellValue("Styled Cell");

        // 创建单元格样式
        ICellStyle style = workbook.CreateCellStyle();
        style.FillForegroundColor = IndexedColors.Red.Index;
        style.FillPattern = FillPattern.SolidForeground;

        // 设置字体
        IFont font = workbook.CreateFont();
        font.FontName = "Arial";
        font.FontHeightInPoints = 12;
        font.Color = IndexedColors.White.Index;
        style.SetFont(font);

        // 应用样式
        cell.CellStyle = style;

        // 将工作簿写入文件
        using (FileStream fs = new FileStream("styled_example.xlsx", FileMode.Create, FileAccess.Write))
        {
            workbook.Write(fs);
        }
    }
}

解释代码

  1. 创建样式ICellStyle style = workbook.CreateCellStyle(); 创建一个新的单元格样式。
  2. 设置背景颜色style.FillForegroundColor = IndexedColors.Red.Index; 设置单元格的背景颜色为红色。
  3. 设置填充模式style.FillPattern = FillPattern.SolidForeground; 设置填充模式为实心填充。
  4. 设置字体IFont font = workbook.CreateFont(); 创建一个新的字体,并设置字体名称、大小和颜色。
  5. 应用样式cell.CellStyle = style; 将样式应用到单元格。

处理Excel公式

使用公式计算

以下是一个示例,展示如何使用NPOI Core在Excel中使用公式进行计算。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的工作簿
        IWorkbook workbook = new XSSFWorkbook();
        // 创建一个工作表
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建一行
        IRow row = sheet.CreateRow(0);
        // 创建单元格并设置值
        row.CreateCell(0).SetCellValue(10);
        row.CreateCell(1).SetCellValue(20);

        // 创建公式单元格
        ICell formulaCell = row.CreateCell(2);
        formulaCell.SetCellFormula("A1+B1");

        // 将工作簿写入文件
        using (FileStream fs = new FileStream("formula_example.xlsx", FileMode.Create, FileAccess.Write))
        {
            workbook.Write(fs);
        }
    }
}

解释代码

  1. 设置公式formulaCell.SetCellFormula("A1+B1"); 在单元格中设置公式,计算A1和B1单元格的和。
  2. 写入文件workbook.Write(fs); 将工作簿写入文件。

处理Excel图表

创建图表

以下是一个示例,展示如何使用NPOI Core在Excel中创建图表。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.XSSF.UserModel.Charts;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个新的工作簿
        IWorkbook workbook = new XSSFWorkbook();
        // 创建一个工作表
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 创建数据
        IRow row = sheet.CreateRow(0);
        row.CreateCell(0).SetCellValue("Category");
        row.CreateCell(1).SetCellValue("Value");

        row = sheet.CreateRow(1);
        row.CreateCell(0).SetCellValue("A");
        row.CreateCell(1).SetCellValue(10);

        row = sheet.CreateRow(2);
        row.CreateCell(0).SetCellValue("B");
        row.CreateCell(1).SetCellValue(20);

        row = sheet.CreateRow(3);
        row.CreateCell(0).SetCellValue("C");
        row.CreateCell(1).SetCellValue(30);

        // 创建图表
        XSSFDrawing drawing = (XSSFDrawing)sheet.CreateDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.CreateAnchor(0, 0, 0, 0, 0, 5, 10, 15);

        XSSFChart chart = drawing.CreateChart(anchor);
        chart.SetTitleText("Sample Chart");
        chart.SetTitleOverlay(false);

        // 设置图表数据
        XDDFChartLegend legend = chart.GetOrAddLegend();
        legend.Position = LegendPosition.Bottom;

        XDDFCategoryAxis bottomAxis = chart.CreateCategoryAxis(AxisPosition.Bottom);
        XDDFValueAxis leftAxis = chart.CreateValueAxis(AxisPosition.Left);
        leftAxis.Crosses = AxisCrosses.AutoZero;

        XDDFDataSource<string> xs = XDDFDataSourcesFactory.FromStringCellRange(sheet, new CellRangeAddress(1, 3, 0, 0));
        XDDFNumericalDataSource<double> ys = XDDFDataSourcesFactory.FromNumericCellRange(sheet, new CellRangeAddress(1, 3, 1, 1));

        XDDFBarChartData data = (XDDFBarChartData)chart.CreateData(ChartTypes.Bar, bottomAxis, leftAxis);
        XDDFBarChartData.Series series = (XDDFBarChartData.Series)data.AddSeries(xs, ys);
        series.SetTitle("Series 1", null);
        chart.Plot(data);

        // 将工作簿写入文件
        using (FileStream fs = new FileStream("chart_example.xlsx", FileMode.Create, FileAccess.Write))
        {
            workbook.Write(fs);
        }
    }
}

解释代码

  1. 创建数据:在工作表中创建数据,用于图表的显示。
  2. 创建图表XSSFChart chart = drawing.CreateChart(anchor); 创建一个新的图表。
  3. 设置图表数据:通过XDDFDataSourceXDDFNumericalDataSource设置图表的数据源。
  4. 设置图表类型XDDFBarChartData data = (XDDFBarChartData)chart.CreateData(ChartTypes.Bar, bottomAxis, leftAxis); 设置图表类型为柱状图。
  5. 添加系列XDDFBarChartData.Series series = (XDDFBarChartData.Series)data.AddSeries(xs, ys); 添加数据系列。
  6. 绘制图表chart.Plot(data); 绘制图表。
  7. 写入文件workbook.Write(fs); 将工作簿写入文件。

总结

NPOI Core是一个功能强大且易于使用的开源组件,适用于在.NET Core环境中处理Office文档。通过本文的介绍,您应该已经掌握了如何使用NPOI Core创建、读取和操作Excel和Word文档的基本方法。希望这些内容能够帮助您在项目中更好地处理Office文档。

推荐阅读:
  1. .NET文件格式相关开源项目
  2. Asp.Net Core有什么优势

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

office npoi core

上一篇:.NET Core Tools转向使用MSBuild项目格式的示例分析

下一篇:基于.Net Core 的组件Nuget包制作及发布是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》