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 ...
随机推荐
- switch语句语法
switch case语句适用于从一组互斥的分支中选择一个执行分支. int day = 0;switch (day) { : dayName = "Sunday"; break ...
- 提示'HTTP消息不可读'
1.提示下面的错误信息 2.修改后的代码,费用接口 import unittest import requests import json import HTMLTestRunner ur1 = 'h ...
- java数据结构经典问题
A:栈抽象数据类型 1.栈的主要操作 void push(int data);将data数据插入栈中. int pop();删除并返回最后一个插入栈的元素. 2.栈的辅助操作 int top();返回 ...
- mysql表结构文件
- rpgmakermv插件(1)screenfull.js与Fullscreen.js
本文分析游戏的全屏化处理. 引入:玩家在不同情景下可能会选择全屏游戏或窗口化游戏,所以作为开发者,应该在设置中加入全屏与否的选项. 两种插件:screenfull.js与Fullscreen.js 1 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON ConvolImage
zw版[转发·台湾nvp系列Delphi例程]HALCON ConvolImage procedure TForm1.Button1Click(Sender: TObject);begin img.D ...
- python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
python的函数中,有时会有类似*args,**keys这样的参数,代表的是可变参数,一个*表示元祖,两个*表示字典,就是说这个函数可以接受任何类型的参数,都不会报错,有些函数为了提高可用性,会加这 ...
- RHEL6.4 字符模式下安装图形界面图文教程
本文转自:http://www.cnblogs.com/wahsonleung/p/3230325.html 第1步:当然就是启动redhat,设置映像文件. 第2步:命令行输入yum groupin ...
- Ubuntu系统下Jenkins的git构建基本方法
上一博文讲到了本地脚本的构建方法. 本篇博文主要讲“Ubuntu系统下Jenkins的git构建基本方法”. 点击保存后即可完成简单的构建. 构建触发器 这个触发器是决定什么时候触发构建,可以设置为定 ...
- 教你如何在linux下查看服务是否已经启动或者关闭
1. # ps aux | grep 服务名称(ps 的参数是可以颠倒使用没问题) 2. # netstat -tunple | grep 服务端口 3.bind() 80 in using 代表的含 ...