npoi2.0将datatable对象转换为excel2007示例
时间:2021-07-15 12:47:30
NPOI 2.0将DataTable对象转换为Excel 2007文件提供下载
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
private Stream RenderDataTableToExcel(DataTable SourceTable)
{
XSSFWorkbook workbook = null;
MemoryStream ms = null;
ISheet sheet = null;
XSSFRow headerRow = null;
try
{
workbook = new XSSFWorkbook();
ms = new MemoryStream();
sheet = workbook.CreateSheet();
headerRow = (XSSFRow)sheet.CreateRow(0);
foreach (DataColumn column in SourceTable.Columns)
headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
int rowIndex = 1;
foreach (DataRow row in SourceTable.Rows)
{
XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
foreach (DataColumn column in SourceTable.Columns)
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
++rowIndex;
}
//列宽自适应,只对英文和数字有效
for (int i = 0; i <= SourceTable.Columns.Count; ++i)
sheet.AutoSizeColumn(i);
workbook.Write(ms);
ms.Flush();
}
catch (Exception ex)
{
return null;
}
finally
{
ms.Close();
sheet = null;
headerRow = null;
workbook = null;
}
return ms;
}
private void DownloadExcel(DataTable dt,string reportName)
{
Stream s = RenderDataTableToExcel(dt);
if (s != null)
{
MemoryStream ms = resultStream.result as MemoryStream;
Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + HttpUtility.UrlEncode(reportName) + DateTime.Now.ToString("yyyyMMdd") + ".xlsx"));
Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
Response.BinaryWrite(ms.ToArray());
Response.Flush();
ms.Close();
ms.Dispose();
}
else
Response.Write("出错,无法下载!");
}
标签:npoi,excel2007,datatable
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java基础之finally语句与return语句详解
2021-11-27 19:21:22
Java实现Redis的集合(set)命令操作
2022-05-08 11:07:03
![](https://img.aspxhome.com/file/2023/4/61954_0s.jpg)
Springboot-Shiro基本使用详情介绍
2022-10-13 03:02:42
![](https://img.aspxhome.com/file/2023/2/75702_0s.png)
关于@MapperScan包扫描的坑及解决
2023-02-13 02:45:46
MyBatis中的properties配置(推荐)
2023-06-04 20:47:58
GSON实现Java对象与JSON格式对象相互转换的完全教程
2023-11-23 09:23:37
通过面试题解析 Java 类加载机制
2022-08-13 12:49:16
Java 7大常见排序方法实例详解
2022-01-09 05:16:46
C#中字符串编码处理
2023-10-03 09:56:12
![](https://img.aspxhome.com/file/2023/2/77232_0s.jpg)
Java实现俄罗斯方块的源码分享
2023-02-17 04:20:48
![](https://img.aspxhome.com/file/2023/2/69902_0s.png)
Spring实现处理跨域请求代码详解
2023-11-25 12:28:34
java 中锁的性能提高办法
2021-07-28 10:50:28
关于springBoot yml文件的list读取问题总结(亲测)
2023-11-04 12:37:08
![](https://img.aspxhome.com/file/2023/3/67443_0s.png)
Java多线程之synchronized关键字的使用
2023-12-12 21:46:16
java实现仿射密码加密解密
2022-10-09 04:04:49
Java selenium处理极验滑动验证码示例
2023-12-19 19:10:09
![](https://img.aspxhome.com/file/2023/2/74892_0s.png)
Nacos 动态服务发现、配置和服务管理平台初体验
2022-09-10 23:56:53
![](https://img.aspxhome.com/file/2023/2/66222_0s.png)
如何基于FTP4J实现FTPS连接过程解析
2022-09-19 21:51:35
![](https://img.aspxhome.com/file/2023/5/80315_0s.jpg)
Java探索之Thread+IO文件的加密解密代码实例
2023-01-26 19:07:03
一文带你了解RabbitMQ消息转换器
2023-11-15 23:22:28
![](https://img.aspxhome.com/file/2023/4/64384_0s.jpg)