导出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

最新文章

  1. IT雇员及外包商选择:人品第一
  2. Storm构建分布式实时处理应用初探
  3. 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout
  4. 【转】PHP ob_start() 函数介绍
  5. POJ-3140 Contestants Division (树)
  6. Android关于buildToolVersion与CompileSdkVersion的区别
  7. js判断选择时间不能小于当前时间的代码
  8. 配置servers时,错误:Setting property &#39;source&#39; to &#39;org.eclipse.jst.jee.server:hczm&#39; did not find a matching property
  9. 定位 - CoreLocation - 指南针
  10. IE chrome兼容问题
  11. sql server 2008 在安装了活动目录以后无法启动服务了
  12. template method pattern
  13. yum仓库的创建
  14. Android + https 实现 文件上传
  15. C#-this关键字的功能之扩展方法
  16. Spark在StandAlone模式下提交任务,spark.rpc.message.maxSize太小而出错
  17. PAT 1008 数组元素循环右移问题
  18. pt-heartbeat工具监控MySQL复制延迟
  19. js 正则去除指定的单词
  20. java.util.logging.Logger使用具体解释

热门文章

  1. 全面了解POI操作Microsoft Office(Word、Excel、PowerPoint)
  2. Core1.1环境下,自己实现的一个简单的CRUD框架(反射实现)
  3. pid文件的作用
  4. 201671010140. 2016-2017-2 《Java程序设计》java学习第十周
  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第九周
  6. 在SharePoint解决方案中使用JavaScript (2) – 模块化
  7. [bzoj2212]Tree Rotations(线段树合并)
  8. 为什么要使用href=”javascript:void(0);”
  9. code3731 寻找道路
  10. vim全局替换命令-乾颐堂