首页 > 代码库 > 使用Poi对EXCLE的导入导出
使用Poi对EXCLE的导入导出
import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;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.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.util.CellRangeAddress;import org.junit.Test;public class POIDemo1 { // 导入 // @Test public void test2() throws Exception { // 创建HSSFWorkbook对象(excel的文档对象) HSSFWorkbook wb = new HSSFWorkbook(); // 建立新的sheet对象(excel的表单) HSSFSheet sheet = wb.createSheet("成绩表"); sheet.setDefaultRowHeightInPoints(10);// 设置缺省列高 sheet.setDefaultColumnWidth(20);// 设置缺省列宽 // 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个 HSSFRow row1 = sheet.createRow(0); // 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个 HSSFCell cell = row1.createCell(0); // 设置单元格内容 cell.setCellValue("学员考试成绩一览表"); // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3)); // 在sheet里创建第二行 HSSFRow row2 = sheet.createRow(1); // 创建单元格并设置单元格内容 row2.createCell(0).setCellValue("姓名"); row2.createCell(1).setCellValue("班级"); row2.createCell(2).setCellValue("笔试成绩"); row2.createCell(3).setCellValue("机试成绩"); // 在sheet里创建第三行 HSSFRow row3 = sheet.createRow(2); row3.createCell(0).setCellValue("李明"); row3.createCell(1).setCellValue("As178"); row3.createCell(2).setCellValue(87); row3.createCell(3).setCellValue(78); // .....省略部分代码 // 输出Excel文件 // 输出Excel文件 FileOutputStream output = new FileOutputStream("d:\\workbook.xls"); // OutputStream output=response.getOutputStream(); // response.reset(); // response.setHeader("Content-disposition", // "attachment; filename=details.xls"); // response.setContentType("application/msexcel"); wb.write(output); output.flush(); output.close(); } // 导出 @Test public void loadScoreInfo() throws IOException { List temp = new ArrayList(); FileInputStream fileIn = new FileInputStream("d:\\workbook.xls"); // 根据指定的文件输入流导入Excel从而产生Workbook对象 HSSFWorkbook wb0 = new HSSFWorkbook(fileIn); // 获取Excel文档中的第一个表单 Sheet sht0 = wb0.getSheetAt(0); // 对Sheet中的每一行进行迭代 for (Row r : sht0) { // 如果当前行的行号(从0开始)未达到2(第三行)则从新循环 if (r.getRowNum() < 2) { continue; } // String result1 = getResult(r.getCell(0)); // String result2 = getResult(r.getCell(1)); // String result3 = getResult(r.getCell(2)); // String result4 = getResult(r.getCell(3)); // System.out.println("="+result1); // System.out.println("="+result2); // System.out.println("="+result3); // System.out.println("="+result4); // 创建实体类 ScoreInfo info = new ScoreInfo(); // 取出当前行第1个单元格数据,并封装在info实体stuName属性上 info.setStuName(r.getCell(0).getStringCellValue()); info.setClassName(r.getCell(1).getStringCellValue()); info.setWrittenScores(r.getCell(2).getNumericCellValue()); info.setMachineScores(r.getCell(3).getNumericCellValue()); temp.add(info); } System.out.println(temp); fileIn.close(); } public static String getResult(Cell cell) { if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) { return String.valueOf(cell.getBooleanCellValue()); } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) { return String.valueOf(cell.getNumericCellValue()); } else if (cell.getCellType() == cell.CELL_TYPE_STRING) { return String.valueOf(cell.getStringCellValue()); } else { return String.valueOf(cell.getStringCellValue()); } }}
使用Poi对EXCLE的导入导出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。