Net操作Excel(终极方法NPOI)

http://www.cnblogs.com/stone_w/archive/2012/08/02/2620528.html

Net操作Excel(终极方法NPOI)

前言

Asp.net/C#操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作。

方法

先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用。

Asp.Net导出代码:

NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("test_01");

// 第一列
NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("第一列第一行");

// 第二列
NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(1);
row2.CreateCell(0).SetCellValue("第二列第一行");

// ...

// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
book.Write(ms);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
Response.BinaryWrite(ms.ToArray());
book = null;
ms.Close();
ms.Dispose();

 

Asp.Net导入代码:

HSSFWorkbook hssfworkbook;
#region
public DataTable ImportExcelFile(string filePath)
{
    #region//初始化信息
    try
    {
        using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            hssfworkbook = new HSSFWorkbook(file);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
    #endregion  

    NPOI.SS.UserModel.Sheet sheet = hssfworkbook.GetSheetAt(0);
    System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
    DataTable dt = new DataTable();
    for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
    {
        dt.Columns.Add(Convert.ToChar(((int)‘A‘) + j).ToString());
    }
    while (rows.MoveNext())
    {
        HSSFRow row = (HSSFRow)rows.Current;
        DataRow dr = dt.NewRow();
        for (int i = 0; i < row.LastCellNum; i++)
        {
            NPOI.SS.UserModel.Cell cell = row.GetCell(i);
            if (cell == null)
            {
                dr[i] = null;
            }
            else
            {
                dr[i] = cell.ToString();
            }
        }
        dt.Rows.Add(dr);
    }
    return dt;
}
#endregion  

 C#导出Excel:

public static void WriteExcel(DataTable dt, string filePath)
{
    if (!string.IsNullOrEmpty(filePath) && null != dt && dt.Rows.Count > 0)
    {
        NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
        NPOI.SS.UserModel.ISheet sheet = book.CreateSheet(dt.TableName);

        NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
        }
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 1);
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j]));
            }
        }
        // 写入到客户端
        using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
        {
            book.Write(ms);
            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                byte[] data = ms.ToArray();
                fs.Write(data, 0, data.Length);
                fs.Flush();
            }
            book = null;
        }
    }
}

结论

这样就很简单的解决Excel的操作了,大家可以试试,很好用,如果觉得对您有用请推荐一下,谢谢。

时间: 2024-10-11 16:28:42

Net操作Excel(终极方法NPOI)的相关文章

C#项目中操作Excel文件——使用NPOI库

转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包含数据记录.分析.汇总功能模块的项目.常用的操作Excel文件的方法主要有三个: 1. OleDb: 这种方式是把整个Excel文件当做一个数据源来进行数据的读取操作. 优点:实现方式简单,读取速度快: 缺点:读取Excel数据的过程不太灵活,对内存的占用比较高,当数据量变的很大时,容易由于内存空间

C#操作excel(多种方法比较)

我们在做excel资料的时候,通常有以下方法. 一.导入导出excel常用方法: 1.用查询表的方式查询并show在数据集控件上. public static string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =C:\\08.xls;Extended Properties=Excel 8.0"; public static DataSet ds; protected void Page_Load(obj

Ruby操作Excel的方法与技巧大全

测试工作中,批量的数据通常会放到excel表格中,测试输出的数据写回表格中,这样输入输出易于管理,同时清晰明了 使用ruby来操作excel文件首先需要在脚本里包含以下语句 require'win32ole' 把win32ole包含进来后,就可以通过和windows下的excelapi进行交互来对excel文件进行读写了. 打开excel文件,对其中的sheet进行访问: 1 excel =WIN32OLE::new('excel.Application') 2 workbook =excel.

关于AX操作Excel的方法

这几天用空余时间好好的看了下Excel在AX中的操作.很多东东不是很准确,还有一些东东没有搞明白,不过基本的要求是可以达到了.可以对工作表内的特定行,列或单元格进行读.写操作,以及定义字体颜色,粗体,背景色,还有就是风格,不过好象只有一种,怎么变动都没有改变,郁闷. static void Job152(Args _args){    #Excel    //打开Excel表并写入    SysExcelApplication excel;                            

NPOI(1):Asp.net操作Excel

原文:Asp.net操作Excel(终极方法NPOI) 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用. 另:http://files.cnblogs.com/zhongxinWang/NPOI.rar 导出xlsx:http://www.cnblogs.com/zhongxinWang/p/4157674.html 一:将数据导出到excel List<>作为数据源 //创建Excel文

C#通过NPOI操作Excel

C#操作Excel的方法有很多种,常见的有微软官方的OLE Automation,Apache的POI等.这里介绍的是POI翻译成C#的NPOI. POI是Apache的通过Java操作Office的一个API,可以对Excel,Word,PPT等进行操作,十分的强大.然后就被翻译成C#版本的NPOI了,和log4j与log4net很相似. 好像在NPOI的.net4.0版本之前是不支持office2007及以上的XML格式的,但是最新的版本已经支持了.只需要下载并引用下面五个程序集就能使用了.

C#操作Excel文件(转)

摘要:本文介绍了Excel对象.C#中的受管代码和非受管代码,并介绍了COM组件在.net环境中的使用. 关键词:受管代码:非受管代码:Excel对象:动态连接库 引言 Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格. Excel以其功能强大,界面友好等受到了许多用户的欢迎.在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功 能适用于每一个用户,可以想象程序设计是十分复杂的.由于Excel表格的功能强大,又由于几乎每一台机器都安装了

Apache POI组件操作Excel,制作报表(一)

Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少.那么本文就结合POI来介绍一下操作Excel的方法.    Office 2007的文件结构完全不同于2003,所以对于两个版本的Office组件,POI有不同的处理API,分开使用即可.首先来说几个Excel的基本概念.对于一个Excel文件,这称为一个工

OLEDB操作Excel

使用OLEDB操作Excel 的方法 OleDbConnection conn = null;            try            {              //fileName 表示要操纵的Excel的文件路径,如果excel不存在,现创建它,可以通过模版文件复制创建.                string strConn;                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +