zoukankan      html  css  js  c++  java
  • 使用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());
            }
        }
    
    }
  • 相关阅读:
    JLOI2012:时间流逝
    bzoj 5217: [Lydsy2017省队十连测]航海舰队
    bzoj 4894: 天赋
    bzoj 4870: [Shoi2017]组合数问题
    bzoj 1558: [JSOI2009]等差数列
    bzoj 4945: [Noi2017]游戏
    bzoj 2142: 礼物
    bzoj 5248: [2018多省省队联测]一双木棋
    51nod2383
    codeforces24D
  • 原文地址:https://www.cnblogs.com/Damon-Luo/p/5923572.html
Copyright © 2011-2022 走看看