工具类

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);

最新文章

  1. vim正则表达式~转
  2. Extjs swfUpload 多图片上传
  3. Java提高篇(三三)-----Map总结
  4. clock gating and PLL
  5. python datetime 时间日期处理小结
  6. PYTHON:HTTP头设置工具(以附件名为例)
  7. VOA学习-South Sudan Must Allow Aid
  8. 我是这样发现ISP劫持HTTP请求的
  9. Webpack 2 视频教程 018 - 使用可视化图表进行统计分析打包过程
  10. [HAOI2008]木棍分割
  11. Android Studio 日志工具
  12. mybtis逆向工程实战教程--条件查询
  13. python学习笔记(3)--turtle简单绘制
  14. Python全栈之路----Python2与Python3
  15. H3C ER6300 + 两台 H3C S5120 组网举例
  16. distinct aggregation
  17. GreenPlum数据加载
  18. log parser 微软iis 日志分析
  19. Charles安装包及破解包下载地址
  20. 导入tensorflow:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or director【转】

热门文章

  1. Linux将rm命令设置为回收站【转】
  2. Content-Type的几种常用数据编码格式
  3. hibernate框架学习第一天:hibernate介绍及基本操作
  4. sass个人学习笔记
  5. 使用vue-cli初始化vue项目
  6. java使用spark/spark-sql处理schema数据
  7. scp命令:远程复制粘贴文件
  8. 任意N位二进制的补码实现——队列存放
  9. C#中lock死锁实例教程
  10. STM32L476应用开发之三:串行通讯实验