NPOI导出Excel帮助类
工具类
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; namespace Trumgu_BI_PF.Util
{
public static class NpoiHelper
{
/// <summary>
/// dataset导出Excel
/// </summary>
/// <param name="dataSet"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(DataSet dataSet, string fileFullPath)
{
var dts = dataSet.Tables.Cast<DataTable>().ToList();
ExportToFile(dts, fileFullPath);
} /// <summary>
/// datatable导出Excel
/// </summary>
/// <param name="dataTable"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(DataTable dataTable, string fileFullPath)
{
var dts = new List<DataTable> { dataTable };
ExportToFile(dts, fileFullPath);
} /// <summary>
/// 多个datatable导出Excel
/// </summary>
/// <param name="dataTables"></param>
/// <param name="fileFullPath"></param>
public static void ExportToFile(IEnumerable<DataTable> dataTables, string fileFullPath)
{
IWorkbook workbook = new XSSFWorkbook();
var i = ;
foreach (var dt in dataTables)
{
var sheetName = string.IsNullOrEmpty(dt.TableName) ? "Sheet " + (++i) : dt.TableName;
var sheet = workbook.CreateSheet(sheetName);
var headerRow = sheet.CreateRow();
for (var j = ; j < dt.Columns.Count; j++)
{
var columnName = string.IsNullOrEmpty(dt.Columns[j].ColumnName)
? "Column " + j
: dt.Columns[j].ColumnName;
headerRow.CreateCell(j).SetCellValue(columnName);
} for (var a = ; a < dt.Rows.Count; a++)
{
var dr = dt.Rows[a];
var row = sheet.CreateRow(a + );
for (var b = ; b < dt.Columns.Count; b++)
{
row.CreateCell(b).SetCellValue(dr[b] != DBNull.Value
? dr[b].ToString()
: string.Empty);
}
}
} using (var fs = File.Create(fileFullPath))
{
workbook.Write(fs);
}
} /// <summary>
/// excel导入datatable
/// </summary>
/// <param name="xlsxFile"></param>
/// <returns></returns>
public static List<DataTable> GetDataTablesFrom(string xlsxFile)
{
if (!File.Exists(xlsxFile))
throw new FileNotFoundException("文件不存在"); var result = new List<DataTable>();
Stream stream = new MemoryStream(File.ReadAllBytes(xlsxFile));
IWorkbook workbook = new XSSFWorkbook(stream);
for (var i = ; i < workbook.NumberOfSheets; i++)
{
var dt = new DataTable();
var sheet = workbook.GetSheetAt(i);
var headerRow = sheet.GetRow();
int cellCount = headerRow.LastCellNum;
for (int j = headerRow.FirstCellNum; j < cellCount; j++)
{
var column = new DataColumn(headerRow.GetCell(j).StringCellValue);
dt.Columns.Add(column);
}
var rowCount = sheet.LastRowNum;
for (var a = (sheet.FirstRowNum + ); a < rowCount; a++)
{
var row = sheet.GetRow(a);
if (row == null) continue; var dr = dt.NewRow();
for (int b = row.FirstCellNum; b < cellCount; b++)
{
if (row.GetCell(b) == null) continue;
dr[b] = row.GetCell(b).ToString();
} dt.Rows.Add(dr);
}
result.Add(dt);
}
stream.Close(); return result;
}
}
}
使用方法
NpoiHelper.ExportToFile(dt, path);
NPOI导出Excel帮助类的更多相关文章
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- .NET NPOI导出Excel详解
NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...
- NPOI导出Excel(含有超过65335的处理情况)
NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...
- NPOI导出excel(带图片)
近期项目中用到Excel导出功能,之前都是用普通的office组件导出的方法,今天尝试用下NPOI,故作此文以备日后查阅. 1.NPOI官网http://npoi.codeplex.com/,下载最新 ...
- NPOI导出EXCEL报_服务器无法在发送 HTTP 标头之后追加标头
虽然发表了2篇关于NPOI导出EXCEL的文章,但是最近再次使用的时候,把以前的代码粘贴过来,居然报了一个错误: “服务器无法在发送 HTTP 标头之后追加标头” 后来也查询了很多其他同学的文章,都没 ...
- NPOI导出Excel及使用问题
NPOI导出Excel及使用问题 因为最近公司质管部门提出了一个统计报表的需求:要求导出一个2016及2017年度深圳区域的所有供应商的费用成本计算--一个22列的Excel表,其中还包括多列的合并单 ...
- 使用NPOI导出Excel文件
使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...
随机推荐
- 华为Qinq的配置
作者:邓聪聪 qinq(dot1q in dot1q)是一种二层环境中的二层vpn技术,用于二层ISP网络将相同客户网络中的vlan帧,再打一层vlan-tag的手段实现同一个客户的不同站点之间的数据 ...
- struts2框架之重复提交问题
防止重复提交 1. 什么是重复提交 * 提交表单时,点击一次后,页面没有刷新时,马上又点击一次,就是重复提交 * 提交后,通过浏览器的回退,又回到了表单页面,再次提交 * 提交后,按F5刷新,也是重复 ...
- $Django redis内存数据库 (知识回顾cmd切换目录)
知识小回顾 #切换盘 C:\Users\WangDong>f: F:\> #切换文件 F:\>cd redis F:\redis> #返回上一级 F:\DJ\dj8>cd ...
- node ,npm和nvm 版本的管理
node npm :node 的包管理 nvm :node 的版本管理 node -v ---->查看node 的版本 (v---->version) npm -v ----->n ...
- 通过python统计nginx日志定位php网站响应慢的问题
# 公司网站反映很慢,可能是一些页面的访问方法或者页面引起,通过程序统计nginx访问日志的页面和具体的action方法访问次数以及平均响应时间可以为程序开发的同事提供参考定位具体的代码 # 默认的n ...
- 我的大学,我的SPR机器人队
时间过的真快,我这个在协会呆了好多年的老油条今年都毕业了,在石油大学大学七年几乎三分之二的时间就是在协会度过的.实话说在北京这是我最亲切的地方,这里有我喜欢的各种设备,有亲爱的老师和一起奋斗的队友,在 ...
- python习题实例(上)_update18/07/03
用以记录python学习过程中做过的小习题~ ヾ(◍°∇°◍)ノ゙ 1.生成两个列表,分别存放将100以内的偶数&奇数 odd_number=[] even_number=[] for i i ...
- Light OJ 1012
经典搜索水题...... #include<bits/stdc++.h> using namespace std; const int maxn = 20 + 13; const int ...
- <转载>ford-fulkerson算法
原文链接http://blog.csdn.net/ivan_zgj/article/details/51580993 最大流问题常常出现在物流配送中,可以规约为以下的图问题.最大流问题中,图中两个顶点 ...
- Ex 2_27 矩阵A的平方是A自乘后的乘积,即AA..._第三次作业