zoukankan      html  css  js  c++  java
  • java 读写 excle 完整版

    pom.xml

    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
    </dependency>
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.14</version>
    </dependency>
    <!-- 处理excel和上面功能是一样的-->
    <dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.10</version>
    </dependency>

    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
    <execution>
    <phase>package</phase>
    <goals>
    <goal>shade</goal>
    </goals>
    <configuration>
    <transformers>
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    <mainClass>com.baozun.util.DecryptAndEncrypt</mainClass>
    </transformer>
    </transformers>
    </configuration>
    </execution>
    </executions>
    </plugin>





    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
    <manifest>
    <mainClass></mainClass>
    </manifest>
    </archive>
    </configuration>
    <executions>
    <execution>
    <id>make-assembly</id>
    <phase>package</phase>
    <goals>
    <goal>single</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
    <archive>
    <addMavenDescriptor>false</addMavenDescriptor>
    </archive>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.3.5.RELEASE</version>
    <configuration>
    <mainClass>com.bj.util.ExcelReaderWrite</mainClass>
    </configuration>
    <executions>
    <execution>
    <goals>
    <goal>repackage</goal>
    </goals>
    </execution>
    </executions>
    </plugin>




    </plugins>

    </build>

    部分参考:http://www.codepub.cn/2017/06/13/Maven-introduces-local-dependency-jar-to-executable-jar-packages/
         https://www.cnblogs.com/523823-wu/p/7635358.html

    代码部分

    package com.baozun.util;
    
    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    public class ExcelReaderWrite {
        private static final String EXCEL_XLS = "xls";
        private static final String EXCEL_XLSX = "xlsx";
        private  static String filePath=null;
        private  static String sheetName=null;
        private static Workbook workBook;
        private static Sheet sheet;
        private Object[][] results;
        private List<List<String>> listData;
        private  static FileInputStream in ;
    
         public ExcelReaderWrite(String filePath, String sheetName) {
            this.filePath = filePath;
            this.sheetName = sheetName;
            innit();
        }
    
        public void innit() {
            workBook = getWorkbok(filePath);
            sheet = workBook.getSheet(sheetName);
        }
    
        public Workbook getWorkbok(String filePath) {
            try {
                File file = new File(filePath);
                if (file.exists()) {
                    in  = new FileInputStream(file);
                    if (file.getName().endsWith(EXCEL_XLS)) {     //Excel&nbsp;2003
    
                        return new HSSFWorkbook(in);
                    } else if (file.getName().endsWith(EXCEL_XLSX)) {    // Excel 2007/2010
                        return new XSSFWorkbook(in);
                    }
                } else {
                    System.out.println(filePath + "不存在 !");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public void setCellData(int rowNum, int colNum, String content) {
            rowNum -= 1;
            colNum -= 1;
            FileOutputStream out = null;
            if (null == sheet.getRow(rowNum)) {
                Row row = sheet.createRow(rowNum);
                if (null == row.getCell(colNum)) {
                    row.createCell(colNum).setCellValue(content);
                } else {
                    row.getCell(colNum).setCellValue(content);
                }
            } else {
                sheet.getRow(rowNum).createCell(colNum).setCellValue(content);
            }
    
            try {
                out = new FileOutputStream(filePath);
                workBook.write(out);
                out.flush();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
    
                    out.flush();
                    out.close();
                    in.close();
                  innit();
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
        }
        private String getCellValue(Cell cell) {
            String cellValue = "";
            DataFormatter formatter = new DataFormatter();
            if (cell != null) {
                switch (cell.getCellType()) {
                    case Cell.CELL_TYPE_NUMERIC:
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                            cellValue = formatter.formatCellValue(cell);
                        } else {
                            double value = cell.getNumericCellValue();
                            int intValue = (int) value;
                            cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);
                        }
                        break;
                    case Cell.CELL_TYPE_STRING:
                        cellValue = cell.getStringCellValue();
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        cellValue = String.valueOf(cell.getBooleanCellValue());
                        break;
                    case Cell.CELL_TYPE_FORMULA:
                        cellValue = String.valueOf(cell.getCellFormula());
                        break;
                    case Cell.CELL_TYPE_BLANK:
                        cellValue = "";
                        break;
                    case Cell.CELL_TYPE_ERROR:
                        cellValue = "";
                        break;
                    default:
                        cellValue = cell.toString().trim();
                        break;
                }
            }
            return cellValue.trim();
        }
        public String getCellData(String sheetName, int rowNum, int colNum) {
            if (rowNum <= 0 || colNum <= 0) {
                return null;
            } else if (workBook.getSheet(sheetName) == null || workBook.getSheet(sheetName).getRow(rowNum - 1) == null) {
    
                return filePath + " 中 " + sheetName + " 不存在,或者" + rowNum + " 行不存在 ! ";
            } else {
                return getCellValue(workBook.getSheet(sheetName).getRow(rowNum - 1).getCell(colNum - 1));
            }
    
        }
        public String getCellData(int rowNum, int colNum) {
            if (rowNum <= 0 || colNum <= 0) {
                return null;
            } else if (workBook.getSheet(sheetName) == null || workBook.getSheet(sheetName).getRow(rowNum - 1) == null) {
    
                return filePath + " 中 " + sheetName + " 不存在,或者" + rowNum + " 行不存在 ! ";
            } else {
                return getCellValue(workBook.getSheet(sheetName).getRow(rowNum - 1).getCell(colNum - 1));
            }
    
        }
        private List<List<String>> getSheetData() {
            listData = new ArrayList<List<String>>();
            int numOfRows = sheet.getLastRowNum()+1;
            System.out.println("sheet.getLastRowNum()="+sheet.getLastRowNum());
            for (int i = 0; i < numOfRows; i++) {
                Row row = sheet.getRow(i);
                Map<String, String> map = new HashMap<String, String>();
                List<String> list = new ArrayList<String>();
                if (row != null) {
                    for (int j = 0; j < row.getLastCellNum(); j++) {
                        Cell cell = row.getCell(j);
                        list.add(this.getCellValue(cell));
                    }
                }
                listData.add(list);
            }
    
            return listData ;
        }
    
        public void printSheetData() {
            // 测试数据excel数据用 ;
    
            List<List<String>> list   = getSheetData();
            System.out.println("总共有 "+list.size()+"   行!");
            for (int i = 0; i < list.size(); i++) {
                System.out.println("第 "+(i+1)+" 行有 "+list.get(i).size()+" 单元格有值 : "+list.get(i).toString());
            }
        }
    
        public static void main(String[] args) {
           // String filePath_1 = "D:/writeExcel.xlsx";
            String filePath_2 = "D:/writeExcel97.xls";
            String sheetName = "Sheet1";
         /*   int lastNum_1 = new ExcelReaderWrite(filePath_1, sheetName).getWorkbok().getSheet(sheetName).getLastrowNum();
            int lastNum_2 = new ExcelReaderWrite(filePath, sheetName).getWorkbok().getSheet(sheetName).getLastrowNum();
            System.out.println(lastNum_1);
            System.out.println(lastNum_2);
            for (int i = 0; i <10 ; i++) {
                new ExcelReaderWrite(filePath_1, sheetName).setCellData(i,3,filePath_1+"_"+String.valueOf(System.currentTimeMillis()));
                new ExcelReaderWrite(filePath_2, sheetName).setCellData(i,3,filePath_2+"_"+String.valueOf(System.currentTimeMillis()));
            }
            String dataValue=  new ExcelReaderWrite(filePath_1, sheetName).getCellData(sheetName, 1, 1);
            System.out.println(dataValue);
            new ExcelReaderWrite(filePath_1, sheetName).printSheetData();
           new ExcelReaderWrite(filePath_2, sheetName).printSheetData();
           */
            ExcelReaderWrite eh=  new ExcelReaderWrite(filePath_2, sheetName);
            eh.setCellData(1,1,"1");
            eh.setCellData(1,2,"1_2");
            eh.printSheetData();
            eh.setCellData(2,1,"22_1");
            eh.setCellData(2,2,"22_2");
    
            eh.printSheetData();
            System.out.println("2row2col="+eh.getCellData(2, 2));
    //        eh.setCellData(1,3,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(1,4,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(1, 5, String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(2,5,String.valueOf(System.currentTimeMillis()));
    
    
    
    
    // eh.setCellData(3,2,String.valueOf(System.currentTimeMillis()));
    //        eh.setCellData(3,3,String.valueOf(System.currentTimeMillis()));
    //s        eh.setCellData(3,4,String.valueOf(System.currentTimeMillis()));
    
    
        }
    
    
    }
    View Code

    解决了  一个对象重复写入时的错误 ;

  • 相关阅读:
    Notes相关开发Tips
    gridView滚动条相关问题
    MyBatis学习(一)简单入门程序
    springMVC入门
    zoj 3702 Gibonacci number 找规律
    邻接表表示
    poj 1269 直线相交情况
    poj 3304 Segments 线段与直线相交的判断
    poj 1654 多边形面积
    zoj 3696 Alien's Organ 概率,泊松分布
  • 原文地址:https://www.cnblogs.com/linbo3168/p/9939992.html
Copyright © 2011-2022 走看看