记录NPOI使用方法
DLL 下载地址:https://files.cnblogs.com/files/xujunbao/NPOI.rar
using NPOI.HSSF.UserModel;
using NPOI.SS.Util;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
protected void btn_export_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt = null; //这里为导出的数据源
string path = Server.MapPath("~/FileUpload/Excel/导出" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls");
TableToExcel2(dt, path); //进行后台文件下载
FileInfo fileInfo = new FileInfo(path);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=报价表" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xls");
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}
public static void TableToExcel2(DataTable dt, string file)
{
IWorkbook workbook;
string fileExt = Path.GetExtension(file).ToLower();
if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }
if (workbook == null) { return; }
ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);
int Excel_row = ;
int Excel_col = ;
BLL.jk_activatedTestingItem_base bll = new BLL.jk_activatedTestingItem_base();
DataTable dt_item = new DataTable();
ICellStyle style = workbook.CreateCellStyle();
//设置单元格的样式:水平对齐居中
style.Alignment = HorizontalAlignment.Center;
//垂直居中
style.VerticalAlignment = VerticalAlignment.Center;
//新建一个字体样式对象
IFont font = workbook.CreateFont();
//设置字体加粗样式
font.Boldweight = short.MaxValue;
//使用SetFont方法将字体样式添加到单元格样式中
style.SetFont(font);
//数据
for (int i = ; i < dt.Rows.Count; i++)
{
long activateId = TypeConverter.ObjectToLong(dt.Rows[i]["activateId"]);
dt_item = bll.GetList("activateId=" + activateId + " and testingItemLevel=1").Tables[];
if (dt_item == null || dt_item.Rows.Count == )
{
continue;
}
IRow row1 = sheet.CreateRow(Excel_row);
//表头
if (i == )
{
row1 = sheet.CreateRow(Excel_row);
ICell cell = row1.CreateCell();
cell.SetCellValue("产品大类");
sheet.SetColumnWidth(, * );
cell.CellStyle = style; //绑定样式到单元格上
cell = row1.CreateCell();
cell.SetCellValue("检测对象");
sheet.SetColumnWidth(, * );
cell.CellStyle = style;
cell = row1.CreateCell();
cell.SetCellValue("检测标准");
sheet.SetColumnWidth(, * );
cell.CellStyle = style;
cell = row1.CreateCell();
cell.SetCellValue("收样说明");
sheet.SetColumnWidth(, * );
cell.CellStyle = style;
}
string value = "";
for (int j = ; j < dt_item.Rows.Count; j++)
{
if (j == && i == )
{
ICell cell = row1.CreateCell();
cell.SetCellValue("检测项目");
sheet.SetColumnWidth(, * );
cell.CellStyle = style;
cell = row1.CreateCell();
cell.SetCellValue("检测周期");
cell.CellStyle = style;
cell = row1.CreateCell();
cell.SetCellValue("检测费用");
cell.CellStyle = style;
cell = row1.CreateCell();
cell.SetCellValue("检测部门");
sheet.SetColumnWidth(, * );
cell.CellStyle = style;
Excel_row++;
}
row1 = sheet.CreateRow(Excel_row);
string deptName = TypeConverter.ObjectToString(dt.Rows[i]["parameterDeptName"]);
for (int ij = ; ij < dt.Columns.Count; ij++)
{
string ColumnName = dt.Columns[ij].ColumnName;
switch (ColumnName)
{
case "productTypeName":
value = TypeConverter.ObjectToString(dt.Rows[i]["productTypeName"]);
ICell cell0 = row1.CreateCell();
cell0.SetCellValue(value);
cell0.CellStyle = style;
break;
case "testingObject":
value = TypeConverter.ObjectToString(dt.Rows[i]["testingObject"]);
ICell cell1 = row1.CreateCell();
cell1.SetCellValue(value);
cell1.CellStyle = style;
break;
case "testingbasisId":
value = TypeConverter.ObjectToString(dt.Rows[i]["testingbasisCode"]) + TypeConverter.ObjectToString(dt.Rows[i]["testingbasisChiName"]) + TypeConverter.ObjectToString(dt.Rows[i]["parameterComment"]);
ICell cell2 = row1.CreateCell();
cell2.SetCellValue(value);
cell2.CellStyle = style;
break;
case "remark":
value = TypeConverter.ObjectToString(dt.Rows[i]["remark"]);
ICell cell3 = row1.CreateCell();
cell3.SetCellValue(value);
cell3.CellStyle = style;
break;
default:
value = "";
break;
}
}
for (int jj = ; jj < dt_item.Columns.Count; jj++)
{
string ColumnName = dt_item.Columns[jj].ColumnName;
switch (ColumnName)
{
case "testingItemName":
value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingItemName"]);
ICell cell4 = row1.CreateCell();
cell4.SetCellValue(value);
break;
case "testingTotalDay":
value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingTotalDay"]);
ICell cell5 = row1.CreateCell();
cell5.SetCellValue(value);
break;
case "testingFee":
value = TypeConverter.ObjectToString(dt_item.Rows[j]["testingFee"]);
ICell cell6 = row1.CreateCell();
cell6.SetCellValue(value);
break;
default:
value = "";
break;
}
}
ICell cell7 = row1.CreateCell();
cell7.SetCellValue(deptName);
Excel_row++;
}
sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - , , )); //跨行 :开始行,结束行,开始列,结束列
sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - , , ));
sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - , , ));
sheet.AddMergedRegion(new CellRangeAddress(Excel_row - dt_item.Rows.Count, Excel_row - , , ));
} //转为字节数组
MemoryStream stream = new MemoryStream();
workbook.Write(stream);
var buf = stream.ToArray(); //保存为Excel文件
using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write))
{
fs.Write(buf, , buf.Length);
fs.Flush();
}
}
记录NPOI使用方法的更多相关文章
- linux下history命令显示历史指令记录的使用方法
Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中.默认保存1000条,你也可以更改这个值 ...
- C#获取变更过的DataTable记录的实现方法
本文实例讲述了C#获取变更过的DataTable记录的实现方法,是一个非常实用的功能!具体实现方法如下: 首先DataTable可以看做是一个物理表的内存式存储,每一个DataRow都有一个属性叫做R ...
- mysql随机查询记录的高效率方法
mysql使用rand随机查询记录的高效率方法 一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了. 但是真 ...
- Sql Server删除数据表中重复记录 三种方法
本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1 ...
- mysql删除重复记录语句的方法
例如: id name value 1 a pp 2 a pp 3 b iii 4 b pp 5 b pp 6 c pp 7 c pp 8 c iii id是主键 要求得到这样的结果 id name ...
- mysql中判断记录是否存在方法比较
我这里总结了判断记录是否存在的常用方法: sql语句:select count(*) from tablename; 然后读取count(*)的值判断记录是否存在.对于这种方法性能上有些浪费,我们只是 ...
- linux记录登录ip方法
PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...
- npoi 使用方法
不少朋友在做项目的过程中或多或少的都会用到excel导入.导出功能,下面我来给大家介绍一下使用NPOI如何导入.导出excel, 通过代码描述一下npoi的使用方法,希望都够给需要的朋友一点点帮助,也 ...
- E - Coin Change UVA - 674 &&(一些记录路径的方法)
这一道题并不难,我们只需要将dp数组先清空,再给dp[0]=1,之后就按照完全背包的模板写 主要是我们要证明着一种方法不会出现把(1+3+4)(1+4+3)当作两种方法,这一点如果自己写过背包的那个表 ...
随机推荐
- 1.6分布式通讯协议-WebService
RPC 包含的要素(webservice) 协议层:tcp/ip 应用层: http协议 SOAP: http+xml 分布式通信框架-webservice分析 什么是webservice webse ...
- 保护代理模式-Access Proxy(Java实现)
保护代理模式-Access Proxy 保护代理模式(Access Proxy), 也叫Protect Proxy. 这种代理用于对真实对象的功能做一些访问限制, 在代理层做身份验证. 通过了验证, ...
- Aras 发布Web Services
https://blog.csdn.net/plm888/article/details/10890173
- 【ShaderToy】画一个球体
嗯,其实渲染球体,可以看做就是一个2d圆形图案+渲染光泽的函数. 定义球体结构——半径,球心坐标 struct Sphere { vec3 center; float radius; };edzx- ...
- JS中JSON和string字符串相互转换
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法. JSON.stringify(obj)将JSO ...
- linux 工具
zsh: ubuntu安装: sudo apt-get install zsh
- MariaDB Galera Cluster部署实践
原理 官方地址:http://galeracluster.com/documentation-webpages/index.html Galera Cluster与传统的复制方式不同,不通过I/O_t ...
- 强大的Resharp插件(转)
使用VS有段时间了,一直深深的折服于其强大的功能.之前一直听说有Resharp这个工具,小猪一直也没有太在意.直到今天…… 下载安装: http://www.jetbrains.com/resharp ...
- I - Beautiful People ZOJ - 2319 (二分法)
The most prestigious sports club in one city has exactly N members. Each of its members is strong an ...
- starting Tomcat v8.5 at localhost has encountered a problem
好像有很多初学者会遇到这个问题 我也遇到这个问题了, 我的问题在于: