使用POI处理Excel总结

使用POI处理Excel总结

关于poi的jar包,可点击POI4.1进行下载

  • 对于xlsx文件和xls文件进行读入
//对于xlsx格式的文件使用 读入第一个sheet。wb1表示excel文件,getSheetAt获取每一个Sheet,序号从0开始
XSSFWorkbook wb1 = new XSSFWorkbook(new FileInputStream(new File("D:\\doc\\paizhao.xlsx")));
XSSFSheet sheet1 = wb1.getSheetAt(0);
        
//对于xls格式的文件使用 读入第一个sheet。对于xls格式的文件使用HSS 
HSSFWorkbook wb2 = new HSSFWorkbook(new FileInputStream(new File("D:\\doc\\sheng.xls")));
HSSFSheet sheet2 = wb2.getSheetAt(0);
  • 对于excel使用的数据结构

可以自定义类info来存储,一个excel中的一行。然后定义List 来存储整个excel。然后通过List进行数据操作即可

  • 对于poi简单操作说明

如果一个单元格的sheet的row的cell没有创建。则不能对其进行操作。通过序号,都是从0开始的,代表第一位。

//定义空的excel文件
XSSFWorkbook wb=new XSSFWorkbook();

操作Sheet

//方式一:通过字符串创建sheet,并命名sheet
wb.createSheet("今日产品");
//方式二:通过序号获取相应的sheet 从0开始是第一个sheet
XSSFSheet sheet1=wb.getSheetAt(0);

操作行

//创建行并获得row
sheet1.createRow(0);
Row row1=sheet1.getRow(0);
//创建并获得单元格
Cell cell=row1.createCell(1);

对于单元格进行赋值两个方式

//方式一:已经创建单元格,直接获取
sheet1.getRow(0).getCell(1).setCellValue("hi");
//方式二:边创建边获取
sheet2.createRow(3).createCell(4).setCellValue("666");
  • 设置Cell的样式
- POI常见字段
//设置第0列的列宽,3000相当于8个字符
sheet.setColumnWidth(0,3760);
//定义字体
XSSFFont font=wb.createFont();
//设置字体的样式 加粗
font.setBold(true);
//创建样式
XSSFCellStyle style=wb.createCellStyle();
//设置此样式使用的字体
style.setFont(font);
//给单元格设置此样式
cell.setCellStyle(style);
  • 对于excel进行遍历
for(Row row:sheet){};
int num=row.getRowNum();可以获得行号
  • 对于excel文件的输出
//使用文件输出流即可利用 excel文件对内容进行输出。如果没有此文件会对此文件进行创建后再操作
FileOutputStream fops=new FileOutputStream(new File("D:\\new.xlsx"));
wb1.write(fops);
fops.close();
  • 关于excel处理出现的问题
//此过程e行的 j列进行循环赋值。共有0列和1列。最终得到的结果只有1列,0列被抹除。
int e=1;
XSSFCell cell=null;
while(rs.hasNext())
{
	rs.next();
	for(int j=0;j<2;j++)
	{
		//原因在于当给(1,0)赋值的时候 会先创建第1行。当给(1,1)赋值的时候 也会创建第一行,导致创建第1行重复
		sheet.createRow(e).createCell(j).setCellValue(rs.getString(j+1));
	}
	e++;
}

修改如下:

int e=1;
XSSFCell cell=null;
//此处定义行row
XSSFRow row=null;
while(rs.hasNext())
{
	rs.next();
	//在循环外面创建行 即可
	row=sheet.createRow(e);
	for(int j=0;j<2;j++)
	{
		row.createCell(j).setCellValue(rs.getString(j+1));
	}
	e++;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值