1.套路
使用了NPOI一段时间,也慢慢了解了操作的流程,或者说套路:
a.创建Workbook:
HSSFWorkbook Workbook = new HSSFWorkbook();
b.在Workbook中创建一个工作表并获得该工作表的索引(暂且这么说吧):
HSSFSheet sheet = (HSSFSheet)Workbook.CreateSheet("sheet1");// 前面必须要加强制转换
c.在工作表中创建行然后获得该行的索引:
HSSFRow row = (HSSFRow)sheet.CreateRow(0); // 0是指第一行,可以直接创建其他行,如创建第4行而不用先创建前面的
d.在行中创建一个单元格并获得该单元格的索引:
HSSFCell cell = new (HSSFCell)row.CreateCell(0); // 该处的0和上面所说一样
e.然后就可以愉快地对单元格进行操作了,看起来是一种递进方式,这样操作起来也方便。
2.封装的写单元格 WriteCell
为了自己使用方便,我把设置单元格的值的功能封装了一下,可以实现随意按照行列位置写,单元格或者行的创建都封装了,只需要引用工作表:
private static void WriteCell(int row, int col, string val, ref HSSFSheet sheet) { if (sheet.GetRow(row - 1) == null) // 判断行是否被创建 { HSSFRow t_row = (HSSFRow)sheet.CreateRow(row - 1); HSSFCell t_cell = (HSSFCell)t_row.CreateCell(col - 1); t_cell.SetCellValue(val); } else { HSSFRow t_row = (HSSFRow)sheet.GetRow(row - 1); if (t_row.GetCell(col - 1) == null) // 判断列(单元格)是否被创建 { HSSFCell t_cell = (HSSFCell)t_row.CreateCell(col - 1); t_cell.SetCellValue(val); } else { HSSFCell t_cell = (HSSFCell)t_row.GetCell(col - 1); t_cell.SetCellValue(val); } } }
3.封装的复制单元格 CopyCell
将一个工作表中的某个单元格的内容复制到另一个工作表中的某个单元格:
private