NPOI _导出exl(简单应用)
1. 导出exl表格,创建表格导出到客户端
public static MemoryStream Export_Table<T>(List<T> datalist)
{
MemoryStream ms = new MemoryStream();
var members = typeof(T).GetProperties();
var workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet();
NPOI.SS.UserModel.IRow headerRow = sheet.CreateRow();
int order = ;
foreach (var meber in members)//初始化标题
{
string titlevalue = "";
var name = meber.GetCustomAttributes(typeof(TableAttribulate), false);
if (name.Length == )
continue;
var pro = name[] as TableAttribulate;
if (pro == null)
continue;
titlevalue = pro.CName;
var cell = headerRow.CreateCell(order);
cell.SetCellValue(titlevalue);
if(pro.Weight==)
sheet.AutoSizeColumn(order,true);
else
{
sheet.SetColumnWidth(order,pro.Weight);
}
cell.CellStyle = GetStyle(workbook);
cell.CellStyle.Alignment = pro.HorizontalAlignment;
var cellfont = workbook.CreateFont();
cellfont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Bold;
cell.CellStyle.SetFont(cellfont);
order++;
} int rowIndex = ;
foreach (var row in datalist)
{
NPOI.SS.UserModel.IRow dataRow = sheet.CreateRow(rowIndex);
int colIndex = ;
var cellindex = dataRow.CreateCell(colIndex);
cellindex.SetCellValue(rowIndex);
cellindex.CellStyle = GetStyle(workbook);
var cellfont = workbook.CreateFont();
cellfont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Normal;
cellfont.Color = NPOI.HSSF.Util.HSSFColor.LightBlue.Index;
cellindex.CellStyle.SetFont(cellfont);
colIndex++;
foreach (var meber in members)
{
var name = meber.GetCustomAttributes(typeof(TableAttribulate), false);
if (name.Length == )
continue;
var pro = name[] as TableAttribulate;
if (pro == null)
continue;
if (pro.Weight == )
sheet.AutoSizeColumn(colIndex, true);
var cell = dataRow.CreateCell(colIndex);
var mebervalue = meber.GetValue(row);
cell.SetCellValue(mebervalue == null ? "" : mebervalue.ToString());
cell.CellStyle = GetStyle(workbook);
cell.CellStyle.Alignment = pro.HorizontalAlignment;
colIndex++;
}
rowIndex++;
}
workbook.Write(ms);
ms.Seek(, SeekOrigin.Begin);
return ms;//
}
2.代码总的特性
public class TableAttribulate:Attribute
{
public TableAttribulate(string name, int weight = , NPOI.SS.UserModel.HorizontalAlignment hoalign = NPOI.SS.UserModel.HorizontalAlignment.Center)
{
CName = name;
Weight = weight;
HorizontalAlignment = hoalign;
}
public string CName { get; set; } public int Weight { get; set; } public NPOI.SS.UserModel.HorizontalAlignment HorizontalAlignment { get; set; }//对齐方式 }
3.函数样式
public static NPOI.SS.UserModel.ICellStyle GetStyle(NPOI.HSSF.UserModel.HSSFWorkbook workbook)
{
var cs = workbook.CreateCellStyle();
cs.DataFormat = NPOI.HSSF.UserModel.HSSFDataFormat.GetBuiltinFormat("@");
cs.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cs.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cs.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; var cellfont = workbook.CreateFont();
cellfont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Normal; cs.SetFont(cellfont);
return cs;
}
老版的:
public static NPOI.SS.UserModel.ICellStyle GetDefaultStyle(XSSFWorkbook workbook)
{
var cs = workbook.CreateCellStyle();
cs.DataFormat = NPOI.HSSF.UserModel.HSSFDataFormat.GetBuiltinFormat("@");
cs.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cs.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cs.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
cs.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
var cellfont = workbook.CreateFont();
cellfont.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Normal;
cs.SetFont(cellfont);
return cs;
}
4.js调用实例
function func_queryExportExl() {
var url = '@Url.Action("ExportExcel", "ResidentsSigned");
window.location.href = url;
}
5.后端调用
List<TableExel> query = dbContext.Database.SqlQuery<TableExel>(sql).ToList();
var ms = CPSYS.Web.Common.FileOption.Export_Table<TableExel>(query);
return File(ms, "application/vnd.ms-excel", "text.xls");
6.合并单元格后的边框格式问题
public void SetTyleThin(NPOI.HSSF.UserModel.HSSFWorkbook workbook,NPOI.SS.UserModel.ISheet sheet,int lastrow)
{
NPOI.SS.Util.CellRangeAddress region = new NPOI.SS.Util.CellRangeAddress(, lastrow, , );
((NPOI.HSSF.UserModel.HSSFSheet)sheet).SetEnclosedBorderOfRegion(region, NPOI.SS.UserModel.BorderStyle.Thin, NPOI.HSSF.Util.HSSFColor.Black.Index);
}
7.读入模板
HSSFWorkbook workbook = null;
var path = AppDomain.CurrentDomain.BaseDirectory + "/ExcelTemplate/重点孕妇登记随访本.xls";
FileStream filest = new FileStream(path, FileMode.Open, FileAccess.Read); workbook = new HSSFWorkbook(filest);
filest.Close(); NPOI.SS.UserModel.ISheet sheet = workbook.GetSheet("重点孕妇登记随访本");
NPOI _导出exl(简单应用)的更多相关文章
- NET使用NPOI组件导出Excel-入门示例及通用方法
一.Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是as ...
- .Net core NPOI导入导出Excel
最近在想.net core NPOI 导入导出Excel,一开始感觉挺简单的,后来真的遇到很多坑.所以还是写一篇博客让其他人少走一些弯路,也方便忘记了再重温一遍.好了,多的不说,直接开始吧. 在.Ne ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- NPOI导入导出Excel
.net mvc利用NPOI导入导出excel 注意:如何导出的提交方式ajax导出是失效的! 解决方案是:js处理l两个表单的提交 代码: 第一步. 在页面里面加入2个隐藏的iframe, 如下 ...
- Flutter实战视频-移动电商-05.Dio基础_引入和简单的Get请求
05.Dio基础_引入和简单的Get请求 博客地址: https://jspang.com/post/FlutterShop.html#toc-4c7 第三方的http请求库叫做Dio https:/ ...
- 简单回顾NPOI导入导出excel文件
当前环境.net4.0 去官方下下载: NOPI官网 关于NOPI的详细,这里就不再介绍. 在项目中,我们只需引入 NPOI.dll 就可以了. 接下来..................... ...
- C# 使用NPOI 实现Excel的简单导入导出
private void btnImport_Click(object sender, EventArgs e) { DataSet ds = new DataSet(); DataTable dt ...
- NPOI 给导出Excel添加简单样式
需求分析:如下图为我之前导出的Excel数据,没有一点样式,标题行不明显,各个列的数据紧凑,查看数据时得手动拉宽每列,故这次要针对以上问题对它进行优化 结果展示: 代码: /// <summar ...
随机推荐
- " ModuleNotFoundError: No module named 'tkinter' "的解决方法
踩坑场景 在使用pillow这个包处理图片的时候,运行程序,报错ModuleNotFoundError: No module named 'tkinter',遇到ModuleNotFoundError ...
- Wannafly Winter Camp 2020 Day 6J K重排列 - dp
求 \(K\) 是多少个 \(n\) 元置换的周期.\(T\leq 100, n\leq 50, K \leq 10^{18}\) Solution 置换可以被试做若干个环组成的有向图,于是考虑 dp ...
- Spark kafka flume
Flume Flume 是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,通过监控整个文件目录或者某一个特定文件,用于收集数据:同时Flume也 提供数据写到各种数据接 ...
- HDU1163 - Eddy's digital Roots
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1163 九余数:一个数除于9所得到的余数,即模9得到的值 求九余数: 求出一个数的各位数字之和,如果是两 ...
- vs2015配置cv文件,不用每次新建项目在配置
首先 选择空项目:新建完成后点击属性管理器 一定要确定你的环境是x86还是x64:我的是x64: 选择新的项目属性表 点击属性配置:配置cv的库目录.包含目录.链接器输入:可参考我前面的博文 Open ...
- gulp常用插件之gulp-beautify使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-beautify这是一款使用js-beautify进行资产美化插件. 更多使用文档请点击访问gulp-beautify工具官网. 安装 ...
- nodejs安装管理工具nvm的安装和使用
https://segmentfault.com/a/1190000007612011 Windows下载安装程序安装过程中,在 Set Node.js Symlink 这一步设置nodejs程序目录 ...
- Python学习笔记三:数据特征分析
完成数据清理后,下面通过图表展开对数据的分析. 1.前期初判(分布分析): 1)判断分组区间: # a.散点图:plt.scatter(data[字段1],data['字段2'], s = data[ ...
- 性能优化-css,js的加载与执行
前端性能优化 css,js的加载与执行 javascript是单线程的 一个网站在浏览器是如何进行渲染的呢? html页面加载渲染的过程 html渲染过程的一些特点 顺序执行,并发加载 词法分析 并发 ...
- C 库函数 - modf()
C 库函数 - modf() C 标准库 - <math.h> 描述 C 库函数 double modf(double x, double *integer) 返回值为小数部分(小数点后的 ...