.Net Core使用OpenXML导出,导入Excel
2024-09-03 20:19:00
导出Excel是程序很常用到的功能,.Net Core可以借助Open-XML-SDK来导出Excel。
Open-XML-SDK
open-xml-sdk是是微软开源的项目。Open XML SDK是用于Open XML文档(DOCX, XLSX, and PPTX)的开源类库。它可以:
- 生成Word,Excel,PPT时有非常好的性能
- 从XML数据源中填充内容到Word文档中
- 可将单个Word,Excel,PPT分成多个文件或者将多个合并到一个文件中
- DOCX => HTML/CSS 和 HTML/CSS => DOCX 提供友好便捷的方式
- 提取Excel中的数据
- 用正则表达式查找或者替换DOCX / PPTX中的内容
- 更新 DOCX / PPTX 中缓存的数据或者嵌入的表格.
- 文档内容的修改, 例如从文件中删除跟踪的修订或删除不可接受的内容.
依赖 WindowsBase 或 System.IO.Packaging
Platform | System.IO.Packing Source | Tested by |
---|---|---|
.NET 3.5 | WindowsBase | N/A |
.NET 4.0 | WindowsBase | .NET 4.5.2 |
.NET 4.6 | NuGet | .NET 4.6 |
.NET Standard | NuGet | .NET Core 1.0 |
开源地址:https://github.com/OfficeDev/Open-XML-SDK
Nuget:https://www.nuget.org/packages/DocumentFormat.OpenXml
Open XML SDK for Office 文档
http://msdn.microsoft.com/en-us/library/office/bb448854.aspx
示例
首先添加Nuget包引用
直接上代码:
static void Main(string[] args)
{
var spreadsheetDocument = SpreadsheetDocument.Create("F:\\OpenXml.xlsx", SpreadsheetDocumentType.Workbook);
var workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookpart.AddNewPart();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = , Name = "Sheet1" };
sheets.Append(sheet);
var sheetData = worksheetPart.Worksheet.GetFirstChild();
for (int i = ; i < ; i++)
{
Row row = new Row();
for (int j = ; j < ; j++)
{
Cell dataCell = new Cell();
dataCell.CellValue = new CellValue($"{i + 1}行{j + 1}列");
dataCell.DataType = new EnumValue(CellValues.String);
row.AppendChild(dataCell);
}
sheetData.Append(row);
} workbookpart.Workbook.Save();
spreadsheetDocument.Close();
}
导出的Excel如图:
读取Excel
读取Excel的代码会相对简单一些:
static void Main(string[] args)
{
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(@"F:\OpenXml.xlsx", false))
{
WorkbookPart wbPart = doc.WorkbookPart;
Sheet mysheet = (Sheet)doc.WorkbookPart.Workbook.Sheets.ChildElements.FirstOrDefault();
Worksheet worksheet = ((WorksheetPart)wbPart.GetPartById(mysheet.Id)).Worksheet;
SheetData sheetData = (SheetData)worksheet.ChildElements.FirstOrDefault(); foreach (var row in sheetData.ChildElements)
{
foreach (var cell in (row as Row).ChildElements)
{
var cellValue = (cell as Cell).CellValue;
if (cellValue != null)
{
Console.WriteLine(cellValue.Text);
}
}
}
}
}
原文地址:http://www.zkea.net/codesnippet/detail/post-69
最新文章
- IT雇员及外包商选择:人品第一
- Storm构建分布式实时处理应用初探
- 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout
- 【转】PHP ob_start() 函数介绍
- POJ-3140 Contestants Division (树)
- Android关于buildToolVersion与CompileSdkVersion的区别
- js判断选择时间不能小于当前时间的代码
- 配置servers时,错误:Setting property &#39;source&#39; to &#39;org.eclipse.jst.jee.server:hczm&#39; did not find a matching property
- 定位 - CoreLocation - 指南针
- IE chrome兼容问题
- sql server 2008 在安装了活动目录以后无法启动服务了
- template method pattern
- yum仓库的创建
- Android + https 实现 文件上传
- C#-this关键字的功能之扩展方法
- Spark在StandAlone模式下提交任务,spark.rpc.message.maxSize太小而出错
- PAT 1008 数组元素循环右移问题
- pt-heartbeat工具监控MySQL复制延迟
- js 正则去除指定的单词
- java.util.logging.Logger使用具体解释
热门文章
- 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)
- Core1.1环境下,自己实现的一个简单的CRUD框架(反射实现)
- pid文件的作用
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十周
- 201671010140. 2016-2017-2 《Java程序设计》java学习第九周
- 在SharePoint解决方案中使用JavaScript (2) – 模块化
- [bzoj2212]Tree Rotations(线段树合并)
- 为什么要使用href=”javascript:void(0);”
- code3731 寻找道路
- vim全局替换命令-乾颐堂