NPOI操作
1.操作Excel
准备生成的公共方法(将数据源DataTable转换成MemoryStream)
/// <summary>
/// 生成Excel
/// </summary>
/// <param name="table">DataTable</param>
/// <returns>MemoryStream</returns>
public static MemoryStream BuildToExcel(DataTable table)
{
MemoryStream ms = new MemoryStream(); using (table)
{
using (IWorkbook workbook = new HSSFWorkbook())
{
using (ISheet sheet = workbook.CreateSheet())
{
IRow headerRow = sheet.CreateRow(); // handling header.
foreach (DataColumn column in table.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
} // handling value.
int rowIndex = ; foreach (DataRow row in table.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex); foreach (DataColumn column in table.Columns)
{
dataRow.CreateCell(column.Ordinal, CellType.STRING).SetCellValue(row[column].ToString());
} rowIndex++;
} AutoSizeColumns(sheet);
workbook.Write(ms);
ms.Flush();
ms.Position = ;
}
}
} return ms;
}
MVC导出
/// <summary>
/// 下载excel文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <param name="dataTable">数据源</param>
/// <returns>FileResult</returns>
private FileResult DownloadExcel(string fileName, DataTable dataTable)
{
MemoryStream stream = WalletComm.BuildToExcel(dataTable);
stream.Seek(, SeekOrigin.Begin);
return File(stream, "application/vnd.ms-excel", fileName);
}
2.操作CSV
准备生成的公共方法(将数据源DataTable转换成MemoryStream)
/// <summary>
/// 生成CSV
/// </summary>
/// <param name="table">DataTable</param>
/// <returns>MemoryStream</returns>
public static MemoryStream BuildToCsv(DataTable table)
{
Encoding encode = Encoding.GetEncoding("gb2312");
StringBuilder str = new StringBuilder();
if (table != null && table.Columns.Count > && table.Rows.Count > )
{
for (int i = ; i < table.Columns.Count; i++)
{
str.Append(table.Columns[i].ColumnName.Replace("\"", "\"\""));
if (i < table.Columns.Count - )
{
str.Append(",");
}
} foreach (DataRow item in table.Rows)
{
str.Append("\r\n");
for (int i = ; i < table.Columns.Count; i++)
{
if (item[i] != null)
{
str.Append("'").Append(item[i].ToString().Replace("\"", "\"\""));
} if (i < table.Columns.Count - )
{
str.Append(",");
}
}
}
} MemoryStream stream = new MemoryStream(encode.GetBytes(str.ToString()));
return stream;
}
MVC导出
/// <summary>
/// 下载csv文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <param name="dataTable">数据源</param>
/// <returns>FileResult</returns>
private FileResult DownloadCsv(string fileName, DataTable dataTable)
{
MemoryStream stream = WalletComm.BuildToCsv(dataTable);
stream.Seek(, SeekOrigin.Begin);
return File(stream, "text/comma-separated-values", fileName);
}
NPOI操作的更多相关文章
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- NPOI操作Excel辅助类
/// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...
- 数据字典生成工具之旅(4):NPOI操作EXECL
这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的 ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数
2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数 NPOI教程:http://www.cnb ...
- 使用 WeihanLi.Npoi 操作 CSV
使用 WeihanLi.Npoi 操作 CSV Intro 最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用 ...
- C# 如何使用NPOI操作Excel以及读取合并单元格等
C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...
- NPOI操作之一EXCEL数据导入数据库
一.概要 前面讲到NPOI操作EXCEL导出功能,下面讲下从EXCEL里获取数据添加进数据库. 二.代码 HSSFWorkbook hssfworkbook; public void ExcelDat ...
- 用NPOI操作EXCEL-锁定列CreateFreezePane()
public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkboo ...
随机推荐
- Linux定时任务出现问题时正确的解决步骤
但凡是提供服务的,都要有本账.软件服务也不例外.无论是Apache,Nginx,还是我们自己搭建的网站,日志是标配.这里的日志就是一本账. 当定时任务出现问题时,正确的处理步骤是: 1,定时任务服务是 ...
- tomcat上部署CGI
CGI的定义是:外部应用程序与Web服务器之间的接口. 1.Tomcat7支持CGI,但是默认配置是关闭的需要进行如下配置 修改Tomcat conf/web.xml中两处代码,默认是注释掉的,去掉注 ...
- [LeetCode] 721. Accounts Merge_Medium tag: DFS recursive
Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...
- Base64编码加密
package liferay; public class Base64 { public static final char EQUAL = '='; public static final cha ...
- cmd中mysql中文乱码问题
以下为自己亲试: 解决cmd中MySQL查询和命令返回的中文乱码问题 1.修改cmd字符集方法 rem 切换到UTF-8 chcp 65001 rem 切换到默认的GBK chcp 936 rem 美 ...
- linux常用命令:head 命令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...
- linux常用命令:iconv 命令
iconv命令是linux下用于文件转编码的常用命令,对于同时使用windows系统和linux系统的同学来说文件转编码也是经常遇到的操作. 1.命令格式: iconv [选项...] [文件...] ...
- 汽车变智能只靠ADAS?麦克风也是主角
在先进驾驶辅助系统(ADAS)中,结合视觉处理器的CMOS影像感测器已在协助汽车辨识与分类方面发挥关键作用.至于其“听觉”呢? 麦克风也能扮演像摄影机般重要的角色,为自动驾驶车增添更多“智慧”功能吗? ...
- bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI
题目链接1 题目链接2 主席树模板题 两题有细节不同 #include<algorithm> #include<iostream> #include<cstdlib> ...
- Java笔记 #02# 带资源的try语句
索引 普通的 try.java 带资源的 try.java 当资源为 null 的情况 可以参考的文档与资料 / test.txt 待读取的内容 hello. / 普通的 try.java 读取 te ...