excel导出,导入

public static void main(String[] args) {
        //创建excel表格
        HSSFWorkbook wb=new HSSFWorkbook();

        //创建工作表,并指定名称
        HSSFSheet sheet = wb.createSheet("工作表的名字");
        //创建工作表,并指定名称
        HSSFSheet sheet2 = wb.createSheet("工作表2");
        //获取所有的工作表
        Iterator<Sheet> sheetIterator = wb.sheetIterator();
        //获取指定名字的工作表
        HSSFSheet sheet3 = wb.getSheet("工作表2");

        //设置第3列的宽度
        sheet.setColumnWidth(3, 10*256); 
        //设置每一列的默认宽度
        sheet.setDefaultColumnWidth(10*256);
        //设置行默认的行高
        sheet.setDefaultRowHeight((short)300);

        //设置样式
        HSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平  
        //设置标题字体格式  
        HSSFFont font = wb.createFont();     
        //设置字体样式   
        font.setFontHeightInPoints((short)20);   //--->设置字体大小  
        font.setFontName("Courier New");   //---》设置字体,是什么类型例如:宋体  
        font.setItalic(true);     //--->设置是否是加粗  
        cellStyle.setFont(font);     //--->将字体格式加入到style1中     
        //style1.setFillForegroundColor(IndexedColors.DARK_YELLOW.getIndex());  
        //style1.setFillPattern(CellStyle.SOLID_FOREGROUND);设置单元格颜色  
        cellStyle.setWrapText(true);   //设置是否能够换行,能够换行为true  
        cellStyle.setBorderBottom((short)1);   //设置下划线,参数是黑线的宽度  
        cellStyle.setBorderLeft((short)1);   //设置左边框  
        cellStyle.setBorderRight((short)1);   //设置有边框  
        cellStyle.setBorderTop((short)1);   //设置下边框  
        HSSFDataFormat format= wb.createDataFormat();  //--->单元格内容格式 
        cellStyle.setDataFormat(format.getFormat("¥#,##0"));    //--->设置为单元格内容为货币格式  

        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));    //--->设置单元格内容为百分数格式  


        List<String> th=new ArrayList<>();
        th.add("序列");
        th.add("姓名");
        th.add("性别");
        th.add("年龄");

        List<List<String>> tr=new ArrayList<List<String>>();

        for(int i=0;i<100;i++){
            List<String> td=new ArrayList<>();
            td.add(String.valueOf(i));
            td.add(String.valueOf("姓名"+i));
            td.add(String.valueOf("性别"+i));
            td.add(String.valueOf("年龄"+i));
            tr.add(td);
        }

        //创建第一行(即标题)
        HSSFRow row = sheet.createRow(0);
        HSSFCell titleCell = row.createCell(0);
        titleCell.setCellType(HSSFCell.CELL_TYPE_STRING);
        titleCell.setCellValue("标题名");
        titleCell.setCellStyle(cellStyle);
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, th.size()));//合并单元格


        //创建第一行(即标题)
        HSSFRow sheet2Row = sheet2.createRow(0);
        HSSFCell titleCell2 = sheet2Row.createCell(0);
        titleCell2.setCellType(HSSFCell.CELL_TYPE_STRING);
        titleCell2.setCellValue("标题名");
        titleCell2.setCellStyle(cellStyle);
        sheet2.addMergedRegion(new CellRangeAddress(0, 1, 0, th.size()));//合并单元格

        HSSFRow sheet1Row2 = sheet.createRow(2);
        HSSFRow sheet2Row2 = sheet2.createRow(2);
        for(int i=0;i<th.size();i++){
            HSSFCell heet1RowCell = sheet1Row2.createCell(i);
            heet1RowCell.setCellValue(th.get(i));

            HSSFCell heet2RowCell = sheet2Row2.createCell(i);
            heet2RowCell.setCellValue(th.get(i));
        }


        for(int i=0;i<tr.size();i++){
            HSSFRow createRow3 = sheet.createRow(i+3);
            List<String> list = tr.get(i);
            for(int j=0;j<list.size();j++){
                HSSFCell cell = createRow3.createCell(j);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(j));
            }

        }

        for(int i=0;i<tr.size();i++){
            HSSFRow createRow3 = sheet2.createRow(i+3);
            List<String> list = tr.get(i);
            for(int j=0;j<list.size();j++){
                HSSFCell cell = createRow3.createCell(j);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(j));
            }

        }
        try {
            FileOutputStream file=new FileOutputStream("e:\\workbook.xls");
            wb.write(file);
            file.flush();
        //wb.write(fos);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
private HashMap<String, Integer> parseExcel(InputStream inputStream) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        try {
            try (NPOIFSFileSystem fs = new NPOIFSFileSystem(inputStream);
                    HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true)) {
                Sheet sheet = wb.getSheetAt(0);
                Objects.requireNonNull(sheet, "无法读取到文件中的Sheet");
                int rows = sheet.getLastRowNum();
                LOG.debug("上传总的行数:{}", rows);
                for (int rowIndex = 1; rowIndex <= rows; rowIndex++) {
                    Row row = sheet.getRow(rowIndex);
                    Cell codeCell = row.getCell(0);
                    String code = codeCell.getCellType() == Cell.CELL_TYPE_NUMERIC
                            ? String.valueOf(new Double(codeCell.getNumericCellValue()).intValue())
                            : codeCell.getStringCellValue();
                    Objects.requireNonNull(code, "导入商品的编码不能为空");                    
                    Cell quantityCell = row.getCell(1);
                    switch (quantityCell.getCellType()) {
                    case Cell.CELL_TYPE_NUMERIC: {
                        Double quantity = quantityCell.getNumericCellValue();
                        Objects.requireNonNull(quantity, "商品编码:" + code + "数量不能为空");
                        map.put(code, quantity.intValue());
                        break;
                    }
                    case Cell.CELL_TYPE_STRING: {
                        String quantity = quantityCell.getStringCellValue();
                        Objects.requireNonNull(quantity, "商品编码:" + code + "数量不能为空");
                        map.put(code, Integer.parseInt(quantity));
                        break;
                    }
                    default:{
                        LOG.error("导入的数量类型单元格格式不匹配");
                        throw new ApplicationException("导入的数量类型单元格格式不匹配");
                    }

                    }
                }
            }
        } catch (Exception exp) {
            LOG.error("Excel文件解析发生错误", exp);
            throw new ApplicationException(exp.getMessage(), exp);
        }
        return map;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值