这里使用的NPOI版本为: 2.1.3.1

版本内包含.Net 2.0 与.Net 4.0

.Net 4.0中包含文件

使用时需引用需要引用所有5个dll

使用到的引用

using NPOI.HSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

还有经过自己整理的导入导出Excel代码:

///

/// Excel导入成Datable

///

/// 导入路径(包含文件名与扩展名)

///

public static DataTable ExcelToTable(string file)

{

DataTable dt = new DataTable();

IWorkbook workbook;

string fileExt = Path.GetExtension(file).ToLower();

using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))

{

//XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式

if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(fs); } else { workbook = null; }

if (workbook == null) { return null; }

ISheet sheet = workbook.GetSheetAt(0);

//表头

IRow header = sheet.GetRow(sheet.FirstRowNum);

List columns = new List();

for (int i = 0; i < header.LastCellNum; i++)

{

object obj = GetValueType(header.GetCell(i));

if (obj == null || obj.ToString() == string.Empty)

{

dt.Columns.Add(new DataColumn("Columns" + i.ToString()));

}

else

dt.Columns.Add(new DataColumn(obj.ToString()));

columns.Add(i);

}

//数据

for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++)

{

DataRow dr = dt.NewRow();

bool hasValue = false;

foreach (int j in columns)

{

dr[j] = GetValueType(sheet.GetRow(i).GetCell(j));

if (dr[j] != null && dr[j].ToString() != string.Empty)

{

hasValue = true;

}

}

if (hasValue)

{

dt.Rows.Add(dr);

}

}

}

return dt;

}

///

/// Datable导出成Excel

///

///

/// 导出路径(包括文件名与扩展名)

public static void TableToExcel(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);

//表头

IRow row = sheet.CreateRow(0);

for (int i = 0; i < dt.Columns.Count; i++)

{

ICell cell = row.CreateCell(i);

cell.SetCellValue(dt.Columns[i].ColumnName);

}

//数据

for (int i = 0; i < dt.Rows.Count; i++)

{

IRow row1 = sheet.CreateRow(i + 1);

for (int j = 0; j < dt.Columns.Count; j++)

{

ICell cell = row1.CreateCell(j);

cell.SetCellValue(dt.Rows[i][j].ToString());

}

}

//转为字节数组

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, 0, buf.Length);

fs.Flush();

}

}

///

/// 获取单元格类型

///

///

///

private static object GetValueType(ICell cell)

{

if (cell == null)

return null;

switch (cell.CellType)

{

case CellType.Blank: //BLANK:

return null;

case CellType.Boolean: //BOOLEAN:

return cell.BooleanCellValue;

case CellType.Numeric: //NUMERIC:

return cell.NumericCellValue;

case CellType.String: //STRING:

return cell.StringCellValue;

case CellType.Error: //ERROR:

return cell.ErrorCellValue;

case CellType.Formula: //FORMULA:

default:

return "=" + cell.CellFormula;

}

}

C&num; NPOI 导入与导出Excel文档 兼容xlsx&comma; xls

之前写了个小程序,导出一些数据成Excel,程序使用的是Microsoft.Office.Interop.Excel类来操作Excel. 在本机测试的时候都好好的,但是将生成文件放到其他电脑上却怎样也 ...

&lbrack;转&rsqb;C&num; NPOI 导入与导出Excel文档 兼容xlsx&comma; xls

本文转自:https://www.cnblogs.com/lazyneal/p/6148912.html 参考:http://www.cnblogs.com/restran/p/3889479.htm ...

struts2中利用POI导出Excel文档并下载

1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...

转:ASP&period;NET MVC 将IList&lt&semi;T&gt&semi;导出Excel文档的泛型类

/// /// 提供将泛型集合数据导出Excel文档. /// ///

npoi把xlsx文件转为html,C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)...相关推荐

  1. C# NPOI 导入与导出Excel文档 兼容xlsx, xls

    这里使用的NPOI版本为: 2.1.3.1 官方下载地址: http://npoi.codeplex.com/releases 版本内包含.Net 2.0 与.Net 4.0 .Net 4.0中包含文 ...

  2. 腾讯文档导出Excel文档显示‘文件已损坏,无法打开‘解决方法

    转载请标明出处:https://blog.csdn.net/cms18374672699/article/details/112276613 本文出自DistressRroke _chen的博客 相信 ...

  3. Python 批量将.xlsx文件转为.xls文件

    工作需要,需要向xls文件里写入数据.由于xlrd\xlwt写入的数据不带格式,只好把xls模板先转为xlsx格式,用openpyxl批量写入完后再批量转为xls. 百度找的转换实例,实际应用时生成的 ...

  4. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)...

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  5. npoi html导出word,NPOI插件生成导出word文档

    由于以前没有接触NPOI过这个插件,因此几乎都是本身一边百度摸索一边学习.html 这个插件对于Excel的数据导入和导出,能够说是很方便了,前端 可是对于导出word文档,能够说是不多的,百度了不少 ...

  6. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...

    本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...

  7. 如何批量将 Excel 文档转为 Svg 格式

    概要:SVG 是一种图形文件格式,它的全称可缩放的矢量图形,这种图形格式跟我们平时拍照的图片格式是有不一样的,我们平时拍的照片,如果放大到一定的程度都会变得模糊不清.但是 SVG 这种矢量图形格式是可 ...

  8. Python实现谷歌翻译爬虫,翻译PDF,翻译Excel,支持excel文档打开翻译,支持xlsx,xlsm等格式。

    前言: 这两个Python脚本是我在实习期间完成的,具体来自于小组主管的两个小需求.做完之后感觉还是挺有收获的. 实现谷歌翻译,首先需要将我们写的Python脚本还有需要翻译的文件放到谷歌浏览器的安装 ...

  9. 如何批量将 Excel 文档转为 Csv 格式

    概要:CSV 称为逗号分隔值,其文件以纯文本形式存储表格数据(数字和文本),而熟悉 Excel 的小伙伴应该也知道 Excel 也是存储表格数据,只不过 Excel 不仅支持文本,还支持图片.视频等多 ...

最新文章

  1. [BZOJ 1012] 最大数maxnumber
  2. 从直播答题看背后的移动音视频开发
  3. 012.Adding a New Field --【添加一个新字段】
  4. php引用类,thinkphp引用类的使用
  5. java date 实例_Java Date 和 Calendar 实例
  6. org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=EXECUTE
  7. java读取文件夹,如何从Java读取文件夹中的所有文件?
  8. jquery用ajax,超简单的jquery的AJAX用法
  9. python处理音频的库_Python中音频处理库pydub的使用教程
  10. 计算机pe教程,黑鲨装机大师PE界面使用教程
  11. CubeMX编写风力摆控制系统[HAL库]
  12. 幸运抽奖java_java10幸运抽奖
  13. 时钟芯片DS1302的原理及使用
  14. ajax聊天室创建群聊,js+node.js+socket.io实现聊天功能(私聊,创建群聊)
  15. SAP OOALV-SD模块实战开发案例(增删改查)
  16. RQ配置使用Redis Cluster
  17. java虎胆龙威_格斗之王3虎胆龙威
  18. 计算机大赛获奖作品动画,全国xx杯说课大赛计算机类一等奖作品:《遮罩动画》说课课件...
  19. 微信小程序获取用户运动步数后端返回-41003
  20. 《用户至上:用户研究方法与实践(原书第2版)》一导读

热门文章

  1. 杰理之测试盒对耳串口升级功能【篇】
  2. 锐龙intel服务器性能,CPU选购 详解锐龙和英特尔性能对比
  3. 好用的电脑录屏工具有哪些?电脑好用的录屏工具
  4. Python pandas.DataFrame.max函数方法的使用
  5. mac sketch 导出 html,Mac sketch与前端的无缝对接
  6. java电费计收_12月起,电费每月一缴,记得及时缴费哦!
  7. 爬虫与反爬虫的攻防博弈
  8. [不明觉厉] 下一个排列
  9. 5月31日服务器维护更新公告,绝地求生5月31日更新内容
  10. 二叉树遍历算法详解(递归法+非递归法)