OpenXml读写Excel实例代码

当我们需要处理Excel文件时,可以选择使用OpenXml SDK来读写Excel。本文将提供一份简单易懂的OpenXml读写Excel示例代码以及相应的解释。

前置条件

在运行以下代码之前,需要在项目中安装Open XML SDK包,也可以通过NuGet包管理器中,搜索“DocumentFormat.OpenXml”并安装。

示例代码

首先,我们需要引入命名空间:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Linq;

读取数据

public static List<List<string>> ReadExcelData(string filePath)
{
    List<List<string>> data = new List<List<string>>();
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, false))
    {
        WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
        IEnumerable<Sheet> sheets = workbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
        WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheets.First().Id);
        SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
        foreach (Row row in sheetData.Elements<Row>())
        {
            List<string> rowData = new List<string>();
            foreach (Cell cell in row.Elements<Cell>())
            {
                rowData.Add(GetCellValue(cell, workbookPart));
            }
            data.Add(rowData);
        }
    }
    return data;
}

private static string GetCellValue(Cell cell, WorkbookPart workbookPart)
{
    SharedStringTablePart sharedStringPart = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
    string cellValue;
    if (cell != null && cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
    {
        cellValue = sharedStringPart.SharedStringTable.ElementAt(int.Parse(cell.InnerText)).InnerText;
    }
    else
    {
        cellValue = cell?.InnerText ?? string.Empty;
    }
    return cellValue;
}

以上代码用于读取Excel文件数据,并将其返回为一个包含多个列表的列表,每个内部列表代表一行数据的列表。

写入数据

public static void WriteExcelData(string filePath, List<List<string>> data)
{
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
    {
        WorkbookPart workbookPart = spreadsheetDocument.AddWorkbookPart();
        workbookPart.Workbook = new Workbook();
        Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
        Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(workbookPart.AddNewPart<WorksheetPart>()), SheetId = 1, Name = "Sheet1" };
        sheets.Append(sheet);
        WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
        Worksheet worksheet = new Worksheet(new SheetData());
        worksheetPart.Worksheet = worksheet;
        SheetData sheetData = worksheet.GetFirstChild<SheetData>();
        foreach (List<string> rowData in data)
        {
            Row row = new Row();
            foreach (string cellData in rowData)
            {
                Cell cell = new Cell();
                cell.DataType = ResolveCellDataType(cellData);
                cell.CellValue = new CellValue(cellData);
                row.AppendChild(cell);
            }
            sheetData.AppendChild(row);
        }
        workbookPart.Workbook.Save();
    }
}

private static CellValues ResolveCellDataType(string data)
{
    double result;
    if (double.TryParse(data, out result))
    {
        return CellValues.Number;
    }
    else
    {
        return CellValues.String;
    }
}

以上代码用于将数据写入Excel文件中。可以看到,在这个函数中,我们创建一个新的工作簿,并将数据写入其中。

示例解释

对于读取Excel数据的操作,我们首先使用创建SpreadsheetDocument对象,传入文件路径以打开要处理的Excel文件。然后,我们获取WorkbookPart和SheetData。接下来,我们迭代所获取的行和单元格,并调用GetCellValue方法以获取每个单元格的值。最后,返回将数据打包成一个二维列表的方法。该返回列表的内部列表包含一行中的所有列数据。

对于写入Excel数据的操作,我们创建SpreadsheetDocument对象,并为要创建的工作表添加一个WorkbookPart。接下来,我们建立Sheet、Sheets和WorksheetPart,使得它们在工作部件中。然后,创建Worksheet,并创建工作表数据行和单元格。最后,将数据写入单元格中。

关于读取Excel数据和写入Excel数据,上述代码涵盖了最常用的操作。这可以为大家提供一个用于处理Excel数据的可读性较高的框架。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenXml读写Excel实例代码 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • FtpClient在创建中文目录文件名中的中文显示乱码解决方法

    问题描述:在使用FtpClient 的put方法上传文件或mkdir方法创建目录时,如果文件名或目录名包含中文字符,FtpClient会将文件名或目录名转为乱码。 解决方法: 设置字符集编码为UTF-8 在进行FtpClient的相关操作时,需要设置字符集编码为UTF-8。可以通过以下代码实现: ftpclient.setControlEncoding(&q…

    html 2023年5月31日
    00
  • java使用DOM4J对XML文件进行增删改查操作

    下面是针对“java使用DOM4J对XML文件进行增删改查操作”的完整攻略,希望能对您有所帮助。 一、导入DOM4J库 在进行XML文件操作前,需要先导入DOM4J库。可以通过以下方式: 1.下载 dom4j 的jar包,直接使用在项目中。 2.使用Maven等依赖管理工具,添加以下依赖: <dependency> <groupId>…

    html 2023年5月30日
    00
  • PHP页面转UTF-8中文编码乱码的解决办法

    下面就是PHP页面转UTF-8中文编码乱码的解决办法的完整攻略。 背景 在 web 开发中,有时我们会遇到 PHP 页面中文编码乱码的情况,这给用户的阅读体验和开发者的开发效率都带来很大的影响。本文将介绍 PHP 页面转 UTF-8 中文编码乱码的解决办法。 原因 引起 PHP 页面中文编码乱码的原因可能有很多,常见的有以下两个: 页面编码和数据库编码不一致…

    html 2023年5月31日
    00
  • asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题

    要解决“ASP 读取 UTF-8 格式文档并生成 UTF-8 格式文档的乱码问题”,需要采取以下步骤: 1. 设置文件编码为 UTF-8 首先,要确保读取的文档确实是 UTF-8 编码格式。 在写 ASP 页面之前,请确认该页面采用 UTF-8 编码格式。可在 ASP 页面头部添加如下代码设置页面编码: <%@LANGUAGE="VBSCRI…

    html 2023年5月31日
    00
  • wordpress安装过程中遇到中文乱码的处理方法

    下面是详细讲解”WordPress安装过程中遇到中文乱码的处理方法”的完整攻略: 问题背景 在 WordPress 安装过程中,有时会遇到中文乱码的情况。这是由于网站的编码格式与数据库的编码格式不一致所导致的。如果不及时解决,可能会导致后续的中文内容无法正常显示。 解决方案 针对这种问题,我们可以采取以下两种方法进行处理: 方法一:修改 WordPress …

    html 2023年5月31日
    00
  • AS3.0实例学习 熟悉xml的运用

    AS3.0实例学习 熟悉xml的运用 指的是使用AS3.0编程语言来操作XML数据,可以实现对XML文件的读取、解析和操作。下面是详细的攻略: 什么是XML? XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,可以存储结构化数据,并允许开发人员定义自己的标记。XML可以用于在不同的操作系统、应用程序之间共享和传…

    html 2023年5月30日
    00
  • 腾讯WeGame怎么用?腾讯WeGame使用方法详解

    腾讯WeGame是一款游戏平台,提供游戏下载、社交互动、游戏直播等功能。下面是腾讯WeGame的使用方法详解: 步骤1:下载和安装腾讯WeGame 打开腾讯WeGame官网(https://www.wegame.com.cn/)。 点击“下载客户端”按钮,下载适合您操作系统的版本。 下载完成后,双击安装程序,按照提示完成安装。 步骤2:使用腾讯WeGame下…

    html 2023年5月17日
    00
  • 在Python中处理XML的教程

    在Python中处理XML的教程 什么是XML? XML是一种常用的表示和交换数据的格式。它是一种标记语言,与HTML类似,但没有预定义的标签集。相反,XML允许开发者定义适合自己应用程序的自定义标签。 以下是一个示例XML文档: <?xml version="1.0" encoding="UTF-8"?>…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部