NPOI读取Excel官方demo

简介: 关键代码: 读: HSSFWorkbook hssfworkbook; void InitializeWorkbook(string path) { //read the template via FileStream, it is suggested to use FileAccess.
关键代码: 
读:
   HSSFWorkbook hssfworkbook;

        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);
            }
        }

        void ConvertToDataTable()
        {
            ISheet 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())
            {
                IRow row = (HSSFRow)rows.Current;
                DataRow dr = dt.NewRow();

                for (int i = 0; i < row.LastCellNum; i++)
                {
                    ICell cell = row.GetCell(i);


                    if (cell == null)
                    {
                        dr[i] = null;
                    }
                    else
                    {
                        dr[i] = cell.ToString();
                    }
                }
                dt.Rows.Add(dr);
            }
            dataSet1.Tables.Add(dt);
        }

        private void btnImport_Click(object sender, EventArgs e)
        {
            InitializeWorkbook(@"xls\Book1.xls");
            ConvertToDataTable();

            dataGridView1.DataSource = dataSet1.Tables[0];
        }

写:

//按行列导出数据:
HSSFWorkbook hssfworkbook = new HSSFWorkbook();  //命名空间:using NPOI.HSSF.UserModel;
Sheet sheet1 = hssfworkbook.CreateSheet("Sheet1");  //命名空间:using NPOI.SS.UserModel;
sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");  //在第一行,第一列添加一个值
sheet1.CreateRow(1).CreateCell(0).SetCellValue("This is a test");
Row row = sheet1.CreateRow(2);  //创建第三行。
row.CreateCell(1).SetCellValue("test");  //在第三行第一列加入值  这两行效果和上面那两行是一样的。创建多行用Row代码清晰
sheet1.AutoSizeColumn(0);  //会按照值的长短 自动调节列的大小
sheet1.AutoSizeColumn(1);
using (FileStream file = new FileStream(@"test.xls", FileMode.Create))
{
hssfworkbook.Write(file);  //创建test.xls文件。
file.Close();
}

 

补充:
1.

dt.Columns.Add(Convert.ToChar(((int)'A')+j).ToString());
DataTable如果不创建DataColumn会报错:无法找到列 0。  NPOI.HSSF.UserModel.HSSFCell.ToString

2.
NPOI的行和列的index都是从0开始
3、

POI读取Excel有两种格式一个是HSSF,另一个是XSSF。本文主要是利用HSSF读取Excel
先说下HSSF和XSSF的区别
官方给出的解释如下:
HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format.
XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.
即:HSSF适用2007及以前的版本,XSSF适用2007版本以上的

HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is the POI Project's pure Java implementation of the Excel 2007 OOXML (.xlsx) file format.
HSSF and XSSF provides ways to read spreadsheets create, modify, read and write XLS spreadsheets. They provide:

low level structures for those with special needs
an eventmodel api for efficient read-only access
a full usermodel api for creating, reading and modifying XLS files

相关文章
|
9月前
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
5月前
|
存储 数据处理 Python
官方推荐:6种Pandas读取Excel的方法
官方推荐:6种Pandas读取Excel的方法
|
5月前
|
C#
.net NPOI Excel导入:时间格式2022/5/26导入变成26-5月-2022
​ 1、问题由来 在做一个导入的需求时,测试导入模板,无论导入模板里的日期设置成何种日期格式到代码中都会提示有不正确的格式化数据,加断点调试发现,导入的日期如:Excel表格中是2022/5/26,断点看到的却是26-5月-2022。 2、解决方案 网上查询了几种解决方案,有导入的数据列格式判断转换,日期格式强转等等,都没什么效果,最后解决的方法如下: // NPOI导入日期格式处理 string mytime = dateStr.Trim(); // dateStr为Excel导入的日期值 IFormatProvider culture = new CultureInfo("zh-CN"
36 0
|
XML IDE 编译器
第一个excel VBA demo —— 添加信号并生成一段Verilog代码
第一个excel VBA demo —— 添加信号并生成一段Verilog代码
130 0
第一个excel VBA demo —— 添加信号并生成一段Verilog代码
|
开发框架 .NET
NPOI在.net中的操作Excel
NPOI在.net中的操作Excel
92 2
|
开发框架 关系型数据库 MySQL
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
263 0
.NET Core使用NPOI将Excel中的数据批量导入到MySQL
|
BI 索引
.NET Core使用NPOI导出复杂,美观的Excel详解
.NET Core使用NPOI导出复杂,美观的Excel详解
278 0
.NET Core使用NPOI导出复杂,美观的Excel详解
|
前端开发 开发者
.NET之NPOI Excel数据导出和批量导入功能
.NET之NPOI Excel数据导出和批量导入功能
328 0
.NET之NPOI Excel数据导出和批量导入功能
|
XML Java 程序员
C#项目中操作Excel文件——使用NPOI库
C#项目中操作Excel文件——使用NPOI库
393 0
C#项目中操作Excel文件——使用NPOI库