不少朋友在做项目的过程中或多或少的都会用到excel导入、导出功能,下面我来给大家介绍一下使用NPOI如何导入、导出excel,

通过代码描述一下npoi的使用方法,希望都够给需要的朋友一点点帮助,也能和大家一起学习一下npoi的使用方法,废话不多说,直接上代码

使用NPOI导出Excel代码如下

     private static MemoryStream RenderToExcel(DataTable dt)
{
if (Equals(dt, null))
{
return null;
} MemoryStream ms = new MemoryStream();
using (dt)
{
IWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet();
IRow headerRow = sheet.CreateRow();
foreach (DataColumn column in dt.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.Caption);
} int rowIndex = ;
foreach (DataRow row in dt.Rows)
{
IRow dataRow = sheet.CreateRow(rowIndex); foreach (DataColumn column in dt.Columns)
{
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column.Caption].ToString());
}
rowIndex++;
} workbook.Write(ms);
ms.Flush();
ms.Position = ; } return ms;
}
        private static void SaveToFile(MemoryStream ms, string dirPath, string fileName)
{
if (string.IsNullOrEmpty(dirPath) || string.IsNullOrEmpty(fileName))
{
return;
} if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
} using (FileStream fs = new FileStream(string.Format("{0}{1}", dirPath, fileName), FileMode.Create))
{
byte[] data = ms.ToArray();
fs.Write(data, , data.Length);
fs.Flush(); data = null;
}
}
     public static void SaveExcel(DataTable dt, string dirPath, string fileName)
{
SaveToFile(RenderToExcel(dt), dirPath, fileName);
}

将Excel中的数据导入到DB中的方法如下

        public static DataTable ReadExcelToDataTable(string fileName)
{
using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{ var workbook = default(IWorkbook);
if (fileName.IndexOf(".xlsx", StringComparison.OrdinalIgnoreCase) > )
workbook = new XSSFWorkbook(stream);
else
workbook = new HSSFWorkbook(stream); var sheet = workbook.GetSheetAt(workbook.ActiveSheetIndex);
if (Equals(sheet, null))
{
return null;
} var dt = new DataTable();
CreateDataColumn(sheet, dt);
CreateDataTable(sheet, dt);
return dt;
}
}
        private static void CreateDataTable(ISheet sheet, DataTable dt)
{
for (var i = ; i < sheet.LastRowNum; i++)
{
var sheetRow = sheet.GetRow(i);
var dataRow = dt.NewRow();
for (var j = ; j < sheetRow.LastCellNum; j++)
{
dataRow[j] = sheetRow.GetCell(j).ToString();
} dt.Rows.Add(dataRow);
}
}
        private static void CreateDataColumn(ISheet sheet, DataTable dt)
{
var firstRow = sheet.GetRow();
for (var i = ; i < firstRow.LastCellNum; i++)
{
var column = new DataColumn(firstRow.GetCell(i).StringCellValue);
dt.Columns.Add(column);
}
}

说明:因为使用的是第三方的,需要引入dll文件

请到http://npoi.codeplex.com/releases/view/115353下载npoi,有源码,有编译好的dll文件。

如果只有导出到Excel的功能,下载好以后只需引入"NPOI.dll"

如果将excel中的数据导入到数据库中,并且需要同时兼容office 2003和office 2007的话,需要引入"NPOI.dll"、"NPOI.OOXML.dll"、"NPOI.OpenXml4net.dll"

如果仅仅需要兼容office 2003只需要引入"NPOI.dll"就可以了

office 2010下我没试过,有兴趣的朋友可以试一下,我所使用的编码环境是.net framework 4.0过低的版本我没试过,不知道以上代码能否正常执行

欢迎加入群:254082423

一起学习讨论asp.net mvc

npoi 使用方法的更多相关文章

  1. 记录NPOI使用方法

    DLL 下载地址:https://files.cnblogs.com/files/xujunbao/NPOI.rar using NPOI.HSSF.UserModel; using NPOI.SS. ...

  2. Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流的解决方法

    原本在CS项目中用的好好的在BS项目中既然提示我导出出现无法访问已关闭的流的解决方法 比较郁闷经过研究 终于解决了先将方法发出来 让遇到此问题的筒子们以作参考 //新建类 重写Npoi流方法 publ ...

  3. NPOI组件集锦

    关于NPOI不错的介绍:http://www.cnblogs.com/restran/p/3889479.html http://www.cnblogs.com/Irving/archive/2012 ...

  4. .NET Core 2.0 开源Office组件 NPOI

    前言 去年 12 月,我移植了大家所熟知 NPOI 到 .NET Core 版本,这里是当时发的博客,当时得到了很多同学的支持,社区反应也很好,在这里非常感谢当时推荐的朋友们. 去年的那个版本是针对于 ...

  5. c# winform打印excel(使用NPOI+Spire.xls+PrintDocument直接打印excel)

    前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点 ...

  6. NPOI 操作excel之 将图片插入到指定位置;

    //新建类 重写Npoi流方法 public class NpoiMemoryStream : MemoryStream { public NpoiMemoryStream() { AllowClos ...

  7. .net利用NPOI生成excel文件

    整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...

  8. ASP.NET MVC 使用NPOI导出Excel 无法访问已关闭的流(转)

    第一步重写MemoryStream , 让它不能自动关闭. //新建类 重写Npoi流方法 public class NpoiMemoryStream : MemoryStream { public ...

  9. 未能加载文件或程序集“NPOI”或它的某一个依赖项

    自己遇到过得一个很麻瓜很耽误时间的bug,也请教了一些大神嫩是没找到解决方法 下面分享下问题和解决方法 做的是一个下载功能,本地是没问题IIS站点导出EXCEL的时候出错 我这边看不到错误信息,只能一 ...

随机推荐

  1. Java调用.dll文件

    因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档.在网上找到一个开源的组件JNativ ...

  2. strlen、strcmp、strcat、strcpy、memcpy基础函数的实现

    最近实习+投简历+琐事弄得自己忙的不行不行的,终于今天可以开始记录一些东西了... 1.strlen函数的实现 int strlen(const char *str){ assert(str!=NUL ...

  3. Hibernate、批量操作数据

    Hibernate 批量操作数据可以使用两种方法实现 1.分批更新,每一小批同步一次数据: public void saveEmployee2(){ Session s=HibernateSessio ...

  4. Android UI ActionBar功能-在 Action Bar 上添加按钮

    在ActionBar上添加按钮实现某些功能最常见的Application的功能如:在ActionBar上添加一个搜索按钮: 首先官方文档说明:http://wear.techbrood.com/tra ...

  5. Controller中获取输入参数注解使用总结

    1.处理request的uri部分的参数(即restful访问方式):@PathVariable. 当使用restful访问方式时, 即 someUrl/{paramId}, 这时的参数可通过 @Pa ...

  6. 利用ItextPdf、core-renderer-R8 来生成PDF

    近期因为工作上的须要,须要做一个简历产品的下载功能,而下载的形式要去为PDF,内容要求为整个简历的内容,并且格式上要求和简历的格式排版时一致的!前期调研.开发,最后測试上线.差点儿相同花了7天的时间. ...

  7. ASP.NET mvc4 WEB API异常处理

    当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...

  8. Codeforces Round #256 (Div. 2/C)/Codeforces448C_Painting Fence(分治)

    解题报告 给篱笆上色,要求步骤最少,篱笆怎么上色应该懂吧,.,刷子能够在横着和竖着刷,不能跳着刷,,, 假设是竖着刷,应当是篱笆的条数,横着刷的话.就是刷完最短木板的长度,再接着考虑没有刷的木板,,. ...

  9. 红豆带你从零学C#系列—Visual Studio工具介绍、下载和安装

    一.Visual Studio的下载 Visual Studio(简称VS)是微软的一套完整的开发工具集,集成了能够开发并运行如C#.C++.VB.F#等程序的开发环境,目前最新的版本是Visual ...

  10. api (三)文本字符输出 (转)

    在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接口(GDI)进行的,Windows的三大核心组件之一的GDI32.dll封装了所有的文本和 ...