关键代码: 
读:
   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

表头格式:

    protected CellStyle defaultHeaderStyle(Workbook wb) {
Font headFont = wb.createFont();
headFont.setBold(true);
headFont.setFontName("宋体");
headFont.setFontHeightInPoints((short) 11);
CellStyle cellStyle = wb.createCellStyle();
cellStyle.setFont(headFont);
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setAlignment(HorizontalAlignment.CENTER);
return cellStyle;
}
    protected void setRow(Workbook workbook) {
Sheet sheet= sheet = workbook.createSheet(); sheet.setDefaultColumnWidth(30);
sheet.setColumnWidth(0, 10 * 256);
sheet.setColumnWidth(1, 20 * 256); Row header = sheet.createRow(0);
CellStyle style = defaultHeaderStyle(workbook);
setHeadColumn(header, 0, "活动ID", style);
setHeadColumn(header, 1, "奖品名称", style); // 定义Cell格式
CreationHelper creationHelper = workbook.getCreationHelper();
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-MM-dd hh:mm:ss")); Row userRow = sheet.createRow(1);
userRow.createCell(0).setCellValue(1); Cell dateCell = userRow.createCell(1);
dateCell.setCellValue(new Date());
dateCell.setCellStyle(cellStyle);
} private void setHeadColumn(Row header, int column, String cellValue, CellStyle style) {
Cell cell0 = header.createCell(column);
cell0.setCellStyle(style);
cell0.setCellValue(cellValue);
}

NPOI读取Excel官方demo的更多相关文章

  1. 使用NPOI读取Excel数据并写入SQLite

    首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格 ...

  2. NPOI读取Excel帮助类,支持xls与xlsx,实现公式解析,空行的处理

    NPOI读取Excel(2003或者2010)返回DataTable.支持公式解析,空行处理. /// <summary>读取excel /// 默认第一行为表头 /// </sum ...

  3. NPOI读取Excel表格类

    public class NPOIHelper    {        private HSSFWorkbook workbook;        public static IWorkbook Lo ...

  4. 使用NPOI读取Excel数据到DataTable

    如今XML文件的存储格式大行其道,可是也不是适用于全部情况,非常多单位的数据交换还是使用Excel的形式.这就使得我们须要读取Excel内的数据.载入到程序中进行处理.可是如何有效率的读取,如何使程序 ...

  5. NPOI读取Excel遇到的坑

    NPOI是POI的.NET版本.POI是用Java写成的库,能帮助用户在没有安装Office环境下读取Office2003-2007文件.NPOI在.NET环境下使用,能读写Excel/Word文件. ...

  6. 使用NPOI读取Excel出错

    使用NPOI读取Excel出错,错误信息:java.io.IOException: Invalid header signature; read 4503608217567241, expected ...

  7. asp.net 使用NPOI读取excel文件

    asp.net 使用NPOI读取excel文件内容 NPOI下载地址:NPOI public class ExcelHelper { /// <summary> /// 读取Excel文件 ...

  8. .NET Core 使用NPOI读取Excel返回泛型List集合

    我是一名 ASP.NET 程序员,专注于 B/S 项目开发.累计文章阅读量超过一千万,我的博客主页地址:https://www.itsvse.com/blog_xzz.html 网上有很多关于npoi ...

  9. 使用NPOI读取Excel表格内容并进行修改

    前言 网上使用NPOI读取Excel文件的例子现在也不少,本文就是参考网上大神们的例子进行修改以适应自己需求的. 参考博文 http://www.cnblogs.com/restran/p/38894 ...

随机推荐

  1. Tempdb--关于表变量的一点疑问和测试

    在思考表变量与临时表之间区别时,表变量不会受事务回滚的影响,那么是否意味着表变量无需写入日志呢? 测试方式: 分别对tempdb上的用户表/临时表/表变量 进行10000次插入,查看日志写入次数,使用 ...

  2. DBCC--CHECKDB--结果收集

    --由宋沄剑提供 CREATE TABLE [dbo].[dbcc_history]( [Error] [int] NULL, [Level] [int] NULL, [State] [int] NU ...

  3. 638. Shopping Offers

    In LeetCode Store, there are some kinds of items to sell. Each item has a price. However, there are ...

  4. 《Python绝技:运用Python成为顶级黑客》 用Python刺探网络

    1.使用Mechanize库上网: Mechanize库的Browser类允许我们对浏览器中的任何内容进行操作. #!/usr/bin/python #coding=utf-8 import mech ...

  5. Django(完整的登录示例、render字符串替换和redirect跳转)

    day61 1. 登录的完整示例                       复习:         form表单往后端提交数据需要注意哪三点:  五一回来默写    <-- 谁写错成from谁 ...

  6. 内核漏洞学习—熟悉HEVD

    一直以来内核漏洞安全给很多人的印象就是:难,枯燥.但是内核安全是否掌握是衡量一个系统安全工程师水平的标准之一,也是安全从业人员都应该掌握的基本功.本文通过详细的实例带领读者走进内核安全的大门.难度系数 ...

  7. poj2506 Tiling

    http://poj.org/problem?id=2506 题目大意:用多少种方法可以用2*1或2*2瓦片来铺一个2*n的矩形? 这是一个2*17长方形的样品. 输入是一行行的序列,每一行包含一个整 ...

  8. js面试题-数组去重

    今天,在聊天群里看到数组去重的话题,面试者的答案如下: 参考答案如下: 程序员思维,做出如下测试: 未考虑到:1,‘1’是不同的,应该不去重 未考虑到对象 所以,参考答案只能去重基础类型 根据以往看过 ...

  9. Tomcat几种出错方法

    1.  Several ports (8005, 8089, 8009) required by Tomcat v8.0 Server at localhost are already in use. ...

  10. SQL Server数据库——数据库的数据导出与数据导入

    http://jingyan.baidu.com/article/3c48dd34531d5de10be358b8.html