利用HSSFWorkbook进行Excle的读写

利用HSSFWorkbook进行Excle的读写

 

import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.WorkbookUtil; public class ExcelUtilWithXSSF { public static void main(String[] args) { try { getExcelAsFile("D:/ftp/students.xls"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } // try { // CreateExcelDemo1(); // } catch (ParseException e) { // e.printStackTrace(); // } } /** * 得到Excel,并解析内容 对2007及以上版本 使用XSSF解析 * @param file * @throws FileNotFoundException * @throws IOException * @throws InvalidFormatException */ public static void getExcelAsFile(String file) throws FileNotFoundException, IOException, InvalidFormatException{ // 1.得到Excel常用对象 // POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:/FTP/new1.xls")); // //2.得到Excel工作簿对象 // HSSFWorkbook wb = new HSSFWorkbook(fs); InputStream ins = null; Workbook wb = null; ins=new FileInputStream(new File(file)); //ins= ExcelService.class.getClassLoader().getResourceAsStream(filePath); wb = WorkbookFactory.create(ins); ins.close(); //3.得到Excel工作表对象 Sheet sheet = wb.getSheetAt(0); //总行数 int trLength = sheet.getLastRowNum(); //4.得到Excel工作表的行 Row row = sheet.getRow(0); //总列数 int tdLength = row.getLastCellNum(); //5.得到Excel工作表指定行的单元格 Cell cell = row.getCell((short)1); //6.得到单元格样式 CellStyle cellStyle = cell.getCellStyle(); for(int i=0;i<trLength;i++){ //得到Excel工作表的行 Row row1 = sheet.getRow(i); for(int j=0;j<tdLength;j++){ //得到Excel工作表指定行的单元格 Cell cell1 = row1.getCell(j); /** * 为了处理:Excel异常Cannot get a text value from a numeric cell * 将所有列中的内容都设置成String类型格式 */ if(cell1!=null){ cell1.setCellType(Cell.CELL_TYPE_STRING); } if(j==5&&i<=10){ cell1.setCellValue("1000"); } //获得每一列中的值 System.out.print(cell1+" "); } System.out.println(""); } //将修改后的数据保存 OutputStream out = new FileOutputStream(file); wb.write(out); } /** * 创建Excel,并写入内容 */ public static void CreateExcel(){ //1.创建Excel工作薄对象 HSSFWorkbook wb = new HSSFWorkbook(); //2.创建Excel工作表对象 HSSFSheet sheet = wb.createSheet("new Sheet"); //3.创建Excel工作表的行 HSSFRow row = sheet.createRow(6); //4.创建单元格样式 CellStyle cellStyle =wb.createCellStyle(); // 设置这些样式 cellStyle.setFillForegroundColor(HSSFColor.SKY_BLUE.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //5.创建Excel工作表指定行的单元格 row.createCell(0).setCellStyle(cellStyle); //6.设置Excel工作表的值 row.createCell(0).setCellValue("aaaa"); row.createCell(1).setCellStyle(cellStyle); row.createCell(1).setCellValue("bbbb"); //设置sheet名称和单元格内容 wb.setSheetName(0,"第一张工作表"); //设置单元格内容 cell.setCellValue("单元格内容"); // 最后一步,将文件存到指定位置 try { FileOutputStream fout = new FileOutputStream("E:/students.xls"); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建Excel的实例 * @throws ParseException */ public static void CreateExcelDemo1() throws ParseException{ List list = new ArrayList(); SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); Student user1 = new Student(1, "张三", 16,true, df.parse("1997-03-12")); Student user2 = new Student(2, "李四", 17,true, df.parse("1996-08-12")); Student user3 = new Student(3, "王五", 26,false, df.parse("1985-11-12")); list.add(user1); list.add(user2); list.add(user3); // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet("学生表一"); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row = sheet.createRow((int) 0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 HSSFCell cell = row.createCell((short) 0); cell.setCellValue("学号"); cell.setCellStyle(style); cell = row.createCell((short) 1); cell.setCellValue("姓名"); cell.setCellStyle(style); cell = row.createCell((short) 2); cell.setCellValue("年龄"); cell.setCellStyle(style); cell = row.createCell((short) 3); cell.setCellValue("性别"); cell.setCellStyle(style); cell = row.createCell((short) 4); cell.setCellValue("生日"); cell.setCellStyle(style); // 第五步,写入实体数据 实际应用中这些数据从数据库得到, for (int i = 0; i < list.size(); i++) { row = sheet.createRow((int) i + 1); Student stu = (Student) list.get(i); // 第四步,创建单元格,并设置值 row.createCell((short) 0).setCellValue((double) stu.getId()); row.createCell((short) 1).setCellValue(stu.getName()); row.createCell((short) 2).setCellValue((double) stu.getAge()); row.createCell((short)3).setCellValue(stu.getSex()==true?"男":"女"); cell = row.createCell((short) 4); cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu .getBirthday())); } // 第六步,将文件存到指定位置 try { FileOutputStream fout = new FileOutputStream("E:/students.xls"); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } } } 进行excel文件读取,(记住,这里的用的是2014之前版本后缀是xls的excel)

public static void main(String[] args) {           try {               getExcelAsFile("D:/ftp/students.xls");           } catch (FileNotFoundException e) {               e.printStackTrace();           } catch (IOException e) {               e.printStackTrace();           } catch (InvalidFormatException e) {               e.printStackTrace();           }                         //      try {   //          CreateExcelDemo1();   //      } catch (ParseException e) {   //          e.printStackTrace();   //      }                    }  

会在控制台上读取显示:

如果进行excel文件的创建,那么

public static void main(String[] args) {                        try { 			CreateExcelDemo1(); 		} catch (ParseException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		}            }  			CreateExcelDemo1(); 		} catch (ParseException e) { 			// TODO Auto-generated catch block 			e.printStackTrace(); 		}            }  

那么会在E盘总创建这样一个exce文件

下一篇我会介绍怎么在jsp页面利用HSSFWorkbook进行Excle的读写

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HSSFWorkbook 是 Apache POI 库中的一个类,用于表示 Excel 工作簿。它允许 Java 开发人员创建、读取和修改 Excel 文件,支持多种 Excel 格式,例如 .xls 和 .xlsx 等。 HSSFWorkbook 中包含多个 HSSFSheet 对象,每个 HSSFSheet 对象表示工作簿中的一个工作表。每个 HSSFSheet 对象又包含多个 HSSFRow 对象,每个 HSSFRow 对象表示工作表中的一行数据。每个 HSSFRow 对象又包含多个 HSSFCell 对象,每个 HSSFCell 对象表示工作表中的一个单元格。 以下是一个简单的示例代码,演示如何使用 HSSFWorkbook 创建一个新的 Excel 工作簿,并向其中添加一些数据: ```java import java.io.*; import org.apache.poi.hssf.usermodel.*; public class CreateExcelFile { public static void main(String[] args) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Sheet1"); HSSFRow header = sheet.createRow(0); header.createCell(0).setCellValue("Name"); header.createCell(1).setCellValue("Age"); HSSFRow row1 = sheet.createRow(1); row1.createCell(0).setCellValue("John"); row1.createCell(1).setCellValue(30); HSSFRow row2 = sheet.createRow(2); row2.createCell(0).setCellValue("Jane"); row2.createCell(1).setCellValue(25); FileOutputStream fos = new FileOutputStream("example.xls"); workbook.write(fos); fos.close(); } } ``` 在上面的代码中,我们使用 HSSFWorkbook 类创建一个新的 Excel 工作簿,并使用 createSheet() 方法创建一个名为 "Sheet1" 的新工作表。然后,我们创建一个包含表头的 HSSFRow,并将其添加到工作表中。接下来,我们创建两个 HSSFRow,分别表示 John 和 Jane 的数据,并将它们添加到工作表中。最后,我们使用 FileOutputStream 将工作簿写入文件,并关闭流。 在上面的示例中,我们创建的是一个 .xls 文件。如果要创建 .xlsx 文件,可以使用 XSSFWorkbook 类代替 HSSFWorkbook 类,其他部分的代码基本相同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值