本篇博客将介绍「winform 导出 Excel」或「VS2017 导出 Excel 」又或「C# 导出 Excel」又或「.Net 导出 Excel」的常用的两种方式以及简单分享其他方式(能力原因,已经尽力,用词还是可能不当)。
将数据通过 DataGridView 展示出来之后,用户可能会用 Excel 来存储资料,故还需要将 DataGridView 中显示的必要数据导出。
利用 Microsoft.Office.Interop.Excel
具体步骤请参考:VS2017 导出Excel
注意事项:
在上述博客中,提到 添加好引用之后需要做的就是写代码,但是有一点… 别忘记引用命名空间 。
但是我在微软的官方资料中并没有发现说要「引用命名空间」,参考 Office 如何使用 Excel 对象将 DataGridView 数据导出到 Excel 示例
如果确实需要导入命名空间的话,那就引用下吧,毕竟就是个 Alt + Enter 的功夫或者 Shift + Alt + F10 的功夫。
利用 NPOI
在 NuGet 中可能搜不到 NPOI ,可以按照以下步骤解决:
按 工具->NuGet 包管理器->程序包管理控制台 顺序依次点击,在 VS2017 界面的弹出的 程序包管理控制台输入 Install-Package NPOI -Version 2.4.1
具体参考:NuGet Gallery
NPOI 常用方法:
- 工作本HSSFWorkbook
构造方法,无参表示创建一个新的工作本,可以接收一个流用于打开一个现有的工作本
方法CreateSheet(索引):创建指定索引的sheet对象
方法GetSheetAt(索引):根据索引获取sheet对象
方法CreateCellStyle():创建单元格样式对象
方法CreateFont():创建字体对象
方法Write(stream):将工作本输出到流中 - 工作表HSSFSheet
方法CreateRow(索引):创建指定索引的行
方法GetRow(索引):根据索引获取行
方法AddMergedRegion():设置合并区域,参数包括开始行索引、开始列索引、结束行索引、结束列索引
方法SetColumnWidth(索引,宽度):设置指定列的宽度,单位是一个字符宽度的256分之1(说明:一个汉字占用两个字符)
属性FirstRowNum、LastRowNum:获取第一行、最后一行的索引值 - 行HSSFRow
方法CreateCell(索引):创建指定索引的行
方法GetCell(索引):根据索引获取单元格
属性HeightInPoints:指定或设置高度 - 单元格HSSFCell
方法SetCellValue():设置单元格中的值
属性***CellValue:获取单元格中指定类型的值,如果类型不匹配则抛异常
属性CellStyle:获取或设置单元格样式 - 单元格样式HSSFCellStyle
方法SetFont(字体对象):设置字体样式
属性Alignment:水平对齐,1左,2中,3右 - 字体对象HSSFFont
属性FontHeightInPoints:获取或设置字体大小
属性Boldweight:获取或设置字体加粗
代码示例:
sing Entity;
using Facade;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.Collections