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 ...
随机推荐
- [LeetCode] 42. Trapping Rain Water_hard tag: Two Pointers
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- [LeetCode] 58. Length of Last Word_Easy tag: String
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...
- GNS3的使用2
IDE值没算好,巨卡.重新安装,重新算值.速度快了不少 IDE值:选出现次数多,并且数字大的 2960的选256M 另外加了2个模拟器:ASA防火墙.juniper路由器
- 修改class文件
http://yucaifu1989.iteye.com/blog/1850500 http://blog.csdn.net/hexin373/article/details/6669813 使用ja ...
- Fuzzy and fun on Air Jordan 12 Doernbecher design
Carissa Navarro keeps it warm, fuzzy and fun on her 2017 Air Jordan 12 Doernbecher design. Nike's 20 ...
- Object之wait
一.源码. 1.公共本地,且可继承但不可重写. 2.公共,且可继承但不可重写. 3.公共,且可继承但不可重写. 二.解释. 1.因为这些方法是Object类中的非静态的public方法,而任何其他类都 ...
- mustache语法
mustache 模板,用于构造html页面内容.在实际工作中,当同一个模板中想要调用不同的函数来渲染画面,在已经自定义好了的前提下,可以在渲染页面时对传入的参数进行手动判断. 以下是学习笔记内容: ...
- java后台获取和js拼接展示信息
java后台获取和js拼接展示信息: html页面代码: <div class="results-bd"> <table id="activityInf ...
- pycharm 设置文件编码的位置:Editor-->File Encodings
打开设置-->Editor-->File Encodings
- pyDay5
内容来自廖雪峰的官方网站 1.递归函数的优点是定义简单,逻辑清晰. 2.使用递归函数需要注意防止栈溢出. 3.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会 ...