excel导出,导入
来源:互联网 发布:java dao设计模式 编辑:程序博客网 时间:2024/06/05 16:19
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
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- EXCEL导入导出
- Excel导入&导出
- 数据库导入导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- excel导入、导出数据
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- 导入/导出Excel
- Java DES 加密和解密源码
- iOS与Unity交互
- Matlab的特殊符号——legend()方法和text()方法的插入及特殊字符
- 加解密之Base64实现
- style中position div定位和嵌套问题
- excel导出,导入
- c语言中关于声明和左值右值问题
- Android组件化和插件化开发
- java并发编程——Condition
- android配置时间服务器+亚洲主要的授时服务器
- 利用WPF MediaElement去播放视频或者音乐
- 简单的js限制html中input标签输入空格
- java如何将集合中连续的数值间隔开
- 《C专家编程》学习笔记-1.10