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
将一个工作表中的某个单元格的