java npoi_NPOI的使用

简介:NPOI是POI(APATCH的一个开源项目)项目的.NET版本,最初的POI只用于JAVA来操作EXCEL or WORD等微软OLE2组件项目。使用NPOI可以完成在你没有安装Office或者相应环境的机器上对WORD/EXCEL文档进行读写。

使用案例分享(NPOI针对DATATABLE导出EXCEL):

完成此任务应该准备的DLL:NPOI.DLL ,官网下载链接:http://npoi.codeplex.com/

1.将npoi.dll引用到项目的bin目录中:

e5a73e87126fe3fdc64fee5d9a733eb9.png

2.添加完成之后,代码例子开始:

(对于这种以后项目里可能会经常使用到的工具类,本人建议直接创建一个公共的Respository,相信你懂我的用意)

这里我创建了一个ExcelHelper.cs类,其中需要引用以下几个npoi相关的namespace

using NPOI.HSSF.UserModel;

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

导出的测试代码:(经过测试,可正常使用,这个方法需要优化的地方挺多,有兴趣的话可以自己拿去改善)

public static void TableToExcelForXLS(DataTable dt, string file,string entityName) //dt:你需要导出的数据,file:导出路径,entityName:实体名称

{

HSSFWorkbook hssfworkbook = new HSSFWorkbook();

ISheet sheet = hssfworkbook.CreateSheet("Test");

//表头

IRow row = sheet.CreateRow();

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

//{

string[] str = { "a", "b", "c", "d", "e", "f" };

string[] sysSelect = {"A", "B", "C", "D"};

if (entityName == "XuDaxia")

{

//表头

for (int j = ; j < str.Count(); j++)

{

ICell cell = row.CreateCell(j);

cell.SetCellValue(str[j]);

}

//数据

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

{

IRow row1 = sheet.CreateRow(i + );

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

{

ICell cell = row1.CreateCell(j);

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

}

}

}

else

{

//表头

for (int j = ; j < sysSelect.Count(); j++)

{

ICell cell = row.CreateCell(j);

cell.SetCellValue(sysSelect[j]);

}

//数据

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

{

IRow row1 = sheet.CreateRow(i + );

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

{

ICell cell = row1.CreateCell(j);

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

}

}

}

方法调用:

protected void btn_ExportExcel(object sender, ImageClickEventArgs e)

{

var name = DateTime.Now.ToString("yyyyMMdd") + new Random(DateTime.Now.Second).Next();//导出的Excel默认名称

var path = Server.MapPath("XUDAXIA_TEST/" + name + ".xls");//导出路径

var dt = list.ToDataTable();

string ef= "Xudaxia";

ExcelHelper.x2003.TableToExcelForXLS(dt, path, ef); //2003 版Excel示例

downloadfile(path);

}

输出参数配置:

void downloadfile(string s_path)

{

System.IO.FileInfo file = new System.IO.FileInfo(s_path);

HttpContext.Current.Response.ContentType = "application/ms-download";

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream");

HttpContext.Current.Response.Charset = "utf-8";

HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8));

HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());

HttpContext.Current.Response.WriteFile(file.FullName);

HttpContext.Current.Response.Flush();

HttpContext.Current.Response.Clear();

HttpContext.Current.Response.End();

}

&period;NET Core 首例 Office 开源跨平台组件(NPOI Core)

前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

免费高效实用的&period;NET操作Excel组件NPOI(&period;NET组件介绍之六)

很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

C&num;通过NPOI操作Excel

参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-post.html http://www.yuanjiaocheng.net/w ...

基于NPOI的Excel数据导入

从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

NPOI导出Excel

using System;using System.Collections.Generic;using System.Linq;using System.Text;#region NPOIusing ...

通过NPOI操作Excel

最近在做的一个项目中需要生成Excel,通过学习使用NPOI实现了相关需求,写了一个简便操作的类,记录如下: public class NPOIHelperForExcel { #region exc ...

&period;Net开源Excel、Word操作组件-NPOI、EPPlus、DocX

一.NPOI 简介: NPOI is the .NET version of POI Java project. With NPOI, you can read/write Office 2003/2 ...

转载 NPOI Excel 单元格背景颜色对照表

NPOI Excel 单元格颜色对照表,在引用了 NPOI.dll 后可通过 ICellStyle 接口的 FillForegroundColor 属性实现 Excel 单元格的背景色设置,FillP ...

转载 NPOI&period;dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...

NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

随机推荐

H3 BPM让天下没有难用的流程之技术特性

一.集成性  H3 BPM可以与其它系统进行多个层面的集成,满足企业的针对不同系统的集成需求. 图:多种集成维度 Ø  用户集成 可与企业现有系统进行组织架构同步或调用,也可以直接与AD 进行集成. ...

(转)Sql日期时间格式转换

sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...

JS &amp&semi;&amp&semi; JSON

将Json字符串转为Json对象以下3种方式: eval('(' + str + ')'); JSON.parse(str); jQuery.parseJSON(str): 将Json对象转为字符串: ...

mount --bind 重启后失效的解决办法

vsftp不支持软链接,可以用mount来支持不同的目录结构 mount --bind /home/www/web/ROOT/img/upload /ftp/private/upload 重启后失效. ...

AngularJS的路由、模块、依赖注入

AngularJS的路由在实际应用中更多是由另外封装好的angular-ui-router.js实现的! 为什么不用Ajax而要用前端路由?

asp&period;net上传控件使用

protected void Button1_Click(object sender, EventArgs e) { string str = ""; if (FileUpload ...

大型网站技术架构 核心原理与案例分析 pdf

需要的小伙伴拿去,哈哈.百度云链接:https://pan.baidu.com/s/1hsuiM3q

TextureView&plus;SurfaceTexture&plus;OpenGL ES来播放视频(二)

引自:http://www.jianshu.com/p/b2d949ab1a1a 在使用OpenGL ES 绘制前,我先概括下接下来要做的工作:我先借用一个博主kiffa举的的一个栗子,我觉得说的恰到 ...

IWorkSpace接口介绍

IWorkspace接口提供访问工作空间的通用属性和方法,如它的连接属性,以及包含的数据集的方法. 如何打开一个数据库  要打开一个数据库,也就意味着我们要得到那个工作空间,而工作空间是一个普通类,也 ...

&lbrack;LeetCode&amp&semi;Python&rsqb; Problem 349&period; Intersection of Two Arrays

Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值