2022-10-14 11:56来源:m.sf1369.com作者:宇宇
看出错信息,需要用XSSF处理,是你读取的文件格式不对吧,获取的file是XML文件吗?可以加一句System.out.pringtln(file.getName())看看,poi是处理excel的。
String[] handers = {'1','2','4','5','6'};
HSSFWorkbook wb = new HSSFWorkbook();//创建工作簿
HSSFSheet sheet = wb.createSheet(sheet1);//第一个sheet
HSSFRow rowFirst = sheet.createRow(0);//第一个sheet第一行为标题
//写标题了
for (int i = 0; i < handers.length; i++) {
//获取第一行的每一个单元格
HSSFCell cell = rowFirst.createCell(i);
//往单元格里面写入值
cell.setCellValue(handers[i]);
}
//写数据集
//假定数据集是list集合
for (int i = 0;i < list.size; i++) {
//获取list里面存在是数据集对象
Object obj = list.get(i);
//创建数据行
HSSFRow row = sheet.createRow(i+1);
//设置对应单元格的值
row.createCell(0).setCellValue(obj 的属性0);
row.createCell(1).setCellValue(obj 的属性1);
row.createCell(2).setCellValue(obj 的属性2);
row.createCell(3).setCellValue(obj 的属性3);
row.createCell(4).setCellValue(obj 的属性4);
row.createCell(5).setCellValue(obj 的属性5);
}
//写出文件(path为文件路径含文件名)
OutputStream os = new FileOutputStream(new File(path));
wb.write(os);
以上代码为写出单个sheet,多个sheet其实是同理的!关键就是在创建sheet的时候保证sheet名字不同,对于你的需求,个人建议利用面向对像的思想构建一个excel 对象,对像属性有文件名,文件sheet,然后在是sheet对象包含标题,数据集属性,忘采纳,谢谢!
参考:
public static void xlsDto2Excel(Listxls) throws Exception { // 获取总列数 int CountColumnNum = xls.size(); // 创建Excel文档 HSSFWorkbook hwb = new HSSFWorkbook(); XlsDto xlsDto = null; // sheet 对应一个工作页 HSSFSheet sheet = hwb.createSheet(pldrxkxxmb); HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始 HSSFCell[] firstcell = new HSSFCell[CountColumnNum]; String[] names = new String[CountColumnNum]; names[0] = 学号; names[1] = 姓名; names[2] = 学院; names[3] = 课程名; names[4] = 成绩; for (int j = 0; j < CountColumnNum; j++) { firstcell[j] = firstrow.createCell(j); firstcell[j].setCellValue(new HSSFRichTextString(names[j])); } for (int i = 0; i < xls.size(); i++) { // 创建一行 HSSFRow row = sheet.createRow(i + 1); // 得到要插入的每一条记录 xlsDto = xls.get(i); for (int colu = 0; colu <= 4; colu++) { // 在一行内循环 HSSFCell xh = row.createCell(0); xh.setCellValue(xlsDto.getXh()); HSSFCell xm = row.createCell(1); xm.setCellValue(xlsDto.getXm()); HSSFCell yxsmc = row.createCell(2); yxsmc.setCellValue(xlsDto.getYxsmc()); HSSFCell kcm = row.createCell(3); kcm.setCellValue(xlsDto.getKcm()); HSSFCell cj = row.createCell(4); cj.setCellValue(xlsDto.getCj()); (xlsDto.getMessage()); } } // 创建文件输出流,准备输出电子表格 OutputStream out = new FileOutputStream(POI2Excel/pldrxkxxmb.xls); hwb.write(out); out.close(); System.out.println(数据库导出成功); }