Java 通过Poi api操作(read/write)Excel
来源:互联网 发布:淘宝发展的起源 编辑:程序博客网 时间:2024/06/05 08:30
依赖jar
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency>
我写的工具类
package com.plugins.core.util;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * 支持取.txt、.doc、.docx、.xls、.xlsx,5种格式文档的内容,以字符串的形式返回。 * {@link http://poi.apache.org} * * Created by simon on 16-6-28. */public class JavaExcelUtils {// Excel格式如下示例:// systemFileType fileNo fileName responsibleDpt remark// 1 SC0001 test1.clxs 航海部 没有备注1// 1 SC0002 test2.clxs 航海部 没有备注2// 2 SC0003 test3.clxs 航海部 没有备注3 private static final Logger logger = LoggerFactory.getLogger(JavaExcelUtils.class); //解析Excel文件 public static List<List<Object>> parseExcel(InputStream input) throws Exception { final DecimalFormat decimalFormat = new DecimalFormat("#.####"); final List<List<Object>> items = new ArrayList<List<Object>>(); final Workbook wb =WorkbookFactory.create(input); final Sheet sheet = wb.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); // skip the first row if (rowIterator.hasNext()) { rowIterator.next(); } while (rowIterator.hasNext()) { Row row = rowIterator.next(); List<Object> object=new ArrayList<Object>(); items.add(object); int colIndex = 0; Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); String value = getCellValueAsString(cell, decimalFormat); switch(colIndex) { case 0: //文件类型 object.add(value); break; case 1: //文件编号 object.add(value); break; case 2: //文件名称 object.add(value); break; case 3: ////responsibleDpt object.add(value); break; default: object.add(value); break; } colIndex++; } } wb.close(); return items; } public static byte[] createExcel(List<List<Object>> lists) throws Exception { Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet 1"); // Create a row and put some cells in it. Rows are 0 based. int colIndex = 0; Row row = sheet.createRow(0); row.createCell(colIndex++).setCellValue("systemFileType"); row.createCell(colIndex++).setCellValue("fileNo"); row.createCell(colIndex++).setCellValue("fileName"); row.createCell(colIndex++).setCellValue("responsibleDpt"); row.createCell(colIndex++).setCellValue("remark"); int rowIndex = 1; for (List<Object> item : lists) { colIndex = 0; // 重置列索引为0 row = sheet.createRow(rowIndex); for(int i=0;i<item.size();i++){ row.createCell(colIndex++).setCellValue(item.get(i).toString()); } rowIndex++; } ByteArrayOutputStream output = new ByteArrayOutputStream(); wb.write(output); output.close(); wb.close(); return output.toByteArray(); } // byte[] to file public static void getFile(byte[] bfile, String filePath,String fileName) { BufferedOutputStream bos = null; FileOutputStream fos = null; File file = null; try { File dir = new File(filePath); if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在 dir.mkdirs(); } file = new File(filePath+File.separator+fileName); fos = new FileOutputStream(file); bos = new BufferedOutputStream(fos); bos.write(bfile); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } private static String getCellValueAsString(Cell cell, DecimalFormat decimalFormat) { switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: double numericCellValue = cell.getNumericCellValue(); return decimalFormat.format(numericCellValue); case Cell.CELL_TYPE_STRING: return cell.getStringCellValue(); case Cell.CELL_TYPE_BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); default: break; } return null; }}
我写的测试类
@Test public void test45() throws Exception { System.out.println("start......"); File file=new File("/software/mine-workspace/idea/platform/data/filestorage/1/201606/2815/2348/5de92fb8-c6ce-4ed5-9e8f-b0da0816ce0e.xlsx"); InputStream inputStream=new FileInputStream(file); List<List<Object>> lists= JavaExcelUtils.parseExcel(inputStream); for (List<Object> o:lists){ for(int i=0;i<o.size();i++){ System.out.print(o.get(i)+"\t"); } System.out.println(); } System.out.println("write....."); byte[] bytes=JavaExcelUtils.createExcel(lists); JavaExcelUtils.getFile(bytes,"/home/simon/桌面/","data.xlsx"); System.out.println("end.........."); }
简单好用。。。。
0 0
- Java 通过Poi api操作(read/write)Excel
- with poi API read & write Excel.xlsx ---Java
- Read / Write Excel file in Java using Apache POI
- Read / Write Excel file in Java using Apache POI
- Java POI Excel( poi:纯java操作excel的api )
- java通过poi包操作excel
- Java POI Excel( pio:纯java操作excel的api )
- Java POI Excel( pio:纯java操作excel的api )
- Java POI Excel( pio:纯java操作excel的api )
- Java POI Excel( pio:纯java操作excel的api )
- 【POI】java Excel API
- Java-文件操作|read|write
- poi操作excel常用api
- Java操作Excel Poi
- Java操作Excel Poi
- POI Java操作Excel
- java poi excel 操作
- java poi操作EXCEL
- GPS协议数据格式
- Oracle处理CLOB超过4000入库问题
- Mininet高级操作功能
- Android中程序与Service交互的方式——交互方式
- ServletContext中常用方法
- Java 通过Poi api操作(read/write)Excel
- 数据库中的锁与事务
- 环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)。
- 温度与压强
- 高性能的分布式内存对象缓存系统Memcached
- 部分SWAP 内存知识
- php面试题与答案
- Android 4.4NotificationManagerService使用详解与原理分析(一)__使用详解
- rollup 和 cube 的区别