NPOI 帮助

1、导入Excel

 //通过SaveFileDialog类弹出一个保存对话框

            SaveFileDialog sfd = new SaveFileDialog();

            //设置文件的保存类型,默认选中Excel文件

            sfd.Filter = "Excel文件|*.xls";

            //设置默认保存文件名称

            sfd.FileName = "学生信息表";

            //如果用户点击了保存对话框的确定按钮

            if (sfd.ShowDialog()==DialogResult.OK)

            {

                //获取到Excel文件名

                string filename = sfd.FileName;

                //获取学生列表

                //List<Student> list = dataGridView1.DataSource as List<Student>;

                //内存中创建一个空的Excel文件

               HSSFWorkbook workbook = new HSSFWorkbook();

                //在Excel文件上通过对HSSFSheet创建一个工作表

                HSSFSheet sheet = workbook.CreateSheet("students");

                //给工作表上添加一行

                HSSFRow row1 = sheet.CreateRow(0);

                //在添加的航上创建一个列

                HSSFCell cell1 = row1.CreateCell(0,HSSFCell.CELL_TYPE_STRING);

                //设置该列的值

                cell1.SetCellValue("学号");

                cell1 = row1.CreateCell(1, HSSFCell.CELL_TYPE_STRING);

                cell1.SetCellValue("学生姓名");

                cell1 = row1.CreateCell(2, HSSFCell.CELL_TYPE_STRING);

                cell1.SetCellValue("家庭住址");

                cell1 = row1.CreateCell(3, HSSFCell.CELL_TYPE_STRING);

                cell1.SetCellValue("出生日期");

                //遍历dataGridView中的所有列,然后将列添加到Excel工作表中

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

                {

                    //设置字体

                    HSSFFont font = workbook.CreateFont();

                    //字体名称

                    font.FontName = "华文行楷";

                    //设置字体大小

                    font.FontHeightInPoints = 25;

                    //设置列的样式

                    HSSFCellStyle style1 = workbook.CreateCellStyle();

                    //设置列的背景色

                    style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.ORANGE.index;

                    //设置填充边框样式

                    style1.FillPattern = HSSFCellStyle.SOLID_FOREGROUND;

                    //设置字体显示样式

                    style1.SetFont(font);

                    HSSFCellStyle style2 = workbook.CreateCellStyle();

                    style2.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.YELLOW.index;

                    style2.FillPattern = HSSFCellStyle.SOLID_FOREGROUND;

                    HSSFRow row = sheet.CreateRow(i);

                    HSSFCell cell = row.CreateCell(0, HSSFCell.CELL_TYPE_NUMERIC);

                    cell.CellStyle = style1;

                    cell.SetCellValue(dataGridView1.Rows[i - 1].Cells[0].Value.ToString());

                    cell = row.CreateCell(1,HSSFCell.CELL_TYPE_STRING);

                    cell.CellStyle = style1;

                    cell.SetCellValue(dataGridView1.Rows[i-1].Cells[1].Value.ToString());

                    cell = row.CreateCell(2, HSSFCell.CELL_TYPE_STRING);

                    cell.CellStyle = style2;

                    cell.SetCellValue(dataGridView1.Rows[i-1].Cells[2].Value.ToString());

                    cell = row.CreateCell(3, HSSFCell.CELL_TYPE_STRING);

                    cell.CellStyle = style2;

                    cell.SetCellValue(dataGridView1.Rows[i-1].Cells[3].Value.ToString());

                }

                using (FileStream fs=new FileStream(filename,FileMode.OpenOrCreate))

                {

                    //将内容写入到硬盘中

                    workbook.Write(fs);

                }

                MessageBox.Show("导出成功!");

            }

2、导出Excel

void InitializeWorkbook(string path)

        {

            //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.

            //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added.

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

            {

                hssfworkbook = new HSSFWorkbook(file);

            }

        }

        DataSet ds = new DataSet();

        void ConvertToDataTable()

        {

            HSSFSheet sheet = hssfworkbook.GetSheetAt(0);

            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            DataTable dt = new DataTable();

            for (int j = 0; j < 5; 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++)

                {

                    HSSFCell cell = row.GetCell(i);

                    if (cell == null)

                    {

                        dr[i] = null;

                    }

                    else

                    {

                        dr[i] = cell.ToString();

                    }

                }

                dt.Rows.Add(dr);

            }

            ds.Tables.Add(dt);

        }

        //从Excel导入

        private void button2_Click(object sender, EventArgs e)

        {

            InitializeWorkbook("学生信息表.xls");

            ConvertToDataTable();

           dgvexport.DataSource= ds.Tables[0];

        }

时间: 2024-11-02 12:15:22

NPOI 帮助的相关文章

到处到Excel中NPOI

源地址:http://www.cnblogs.com/dreamof/archive/2010/06/02/1750151.html\ 1.NPOI官方网站:http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2.NPOI在线学习教程(中文版): http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html 感谢Tony Qu分享出NPOI组件的使用方法 3..NET调用NPOI组件导入导

用NPOI从DataBase到Excel &#39;2

NPOI的C# Helper代码2 1 public static MemoryStream ExportXls(DataTable dt) 2 { 3 HSSFWorkbook wk = new HSSFWorkbook(); 4 ISheet sheet = null; 5 6 string sheetName = "Sheet1"; 7 if (!string.IsNullOrEmpty(dt.TableName)) 8 { 9 sheetName = dt.TableName;

用NPOI从DataBase到Excel

NPOI的C# Helper代码 1 public static void WriteExcel(DataTable dt, string filePath) 2 { 3 if (!string.IsNullOrEmpty(filePath) && dt.Rows.Count > 0) 4 { 5 HSSFWorkbook wk = new HSSFWorkbook(); 6 ISheet sheet = wk.CreateSheet(dt.TableName); 7 8 //列头

基于NPOI的Excel数据导入

从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请移步:https://github.com/xuanbg/Utility 概述: 这个帮助类是一个泛型类,泛型参数对应的实体类还起到模板的作用.如果你的Excel文件使用与实体类不同的列标题的话,可以通过给属性加上Alias特性,将列标题和属性进行对应.例如: Excel格式如图: 实体类: 1 u

NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel

1.25 NPOI.dll using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using NPOI.HSSF.UserMod

Npoi导出Excel 实战篇(Webform)

废话不多说,直接上遇到的问题 需求:在这个界面点击导出,导出页面数据,苦于没有做过webfrom项目,弄了半天还是没想到原生态的好方法,所以在网上看了下有没有导出的好例子,结果发现有人推荐使用Npoi,抱着强烈的好奇心,就去查了下这个东东,发现果然强大,哈哈,里面集成了很多东西,下面直接进入解决问题正题: 实现过程(仅供参考) ①发现项目里面接口方法返回DataTable是带参数的,所以新增了一个无参数的方法 ②实现这个方法,重点是将查询到的结果集放大DataTable中 ③先去官网:http:

Topshelf+Quartz.net+Dapper+Npoi(一)

背景 前段时间公司有个需求(每天给业务导出一批数据,以excel的形式通过邮件发送给他).A说:直接写个服务,判断等于某个时间点,执行一下sql语句,生成excel,写个EmaiHelper发送给他不就得了,这有什么麻烦的?B说:我了个亲娘来,还写服务呢?你还需要搞个timer去判断时间点?多费劲啊,直接写个控制台程序,添加个任务计划,不就搞定了吗?我只想说:你们都是大神,每次都不加点新的东西,还写什么代码,多么没劲啊,前两天看到了topshelf+quartz.net这个东东,可以做个练习了.

第三方库NPOI,EPPlus,MyXls导出Excel性能比较

测试平台 CPU:i5 6500 内存:2x4G .NET4.0 测试结果如下: 性能上通过对比很容易得出结论,各方面npoi是最优选择.epplus在列数不是很多的情况下,性能也不错,但是当数据多了的情况下, 对比npoi就有不小的差距了.至于MyXls在测试过程中,当数据较多时,内存不够支撑,直接崩溃了. 性能比较结果: npoi>epplus>Myxls 功能比较结果: npoi是最全的,即能导出2003的.xls格式也能导出2007以后的.xlsx格式.MyXls只能导出.xls,ep

NPOI

前言: NPOI 技术在别人看来可能有点老生长谈了,但是对于我现在处于的这个创业型公司,还是挺前沿的,不知道是前辈们不知道这个技术,还是懒得去对现有的软件进行修改,因为在现有的软件中,几乎所有的数据导入导出都是依赖于: Excel.Application(设置excel组件,系统权限,然后还得考虑版本一系列的问题)都是坑 基于现有的方法,之前的技术团队在软件没有推广之前可能自我感觉良好,没有进行一些系统性的测试,在加上一些别的因素吧,导致在工程文件中对 Excel.Application 的操作

使用NPOI的优势

(一)传统操作Excel遇到的问题: 1.如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机. 2.Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123. 3.导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错. 4.Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它