zoukankan      html  css  js  c++  java
  • java读取excel获取数据写入到另外一个excel

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.nihaorz</groupId>
        <artifactId>excel_hezhan</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>net.sf.jxls</groupId>
                <artifactId>jxls-core</artifactId>
                <version>1.0.6</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.jexcelapi</groupId>
                <artifactId>jxl</artifactId>
                <version>2.6.12</version>
            </dependency>
        </dependencies>
    
    </project>
    

      

    ExcelReader.java

    package com.nihaorz;
    
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.DataFormatter;
    import org.apache.poi.ss.usermodel.DateUtil;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class ExcelReader {
    
    
        private String filePath;
        private String sheetName;
        private Workbook workBook;
        private Sheet sheet;
        private List<String> columnHeaderList;
        private List<List<String>> listData;
        private List<Map<String,String>> mapData;
        private boolean flag;
    
        public ExcelReader(String filePath, String sheetName) {
            this.filePath = filePath;
            this.sheetName = sheetName;
            this.flag = false;
            this.load();
        }
    
        public Map<String, String> getAllData(){
            Map<String, String> map = new HashMap();
            String prefix = "LEFT("";
            String suffix = "",19)";
            for(int i = 0; i < listData.size(); i++){
                List<String> list = listData.get(i);
                List<String> list1 = new ArrayList();
                for(int j = 0; j < list.size(); j++){
                    String str = list.get(j);
                    if(str.startsWith(prefix) && str.endsWith(suffix)){
                        str = str.substring(prefix.length(), str.lastIndexOf(suffix));
                    }
                    list1.add(str);
                }
                map.put(list1.get(0), list.get(1));
            }
            return map;
        }
    
        private void load() {
            FileInputStream inStream = null;
            try {
                inStream = new FileInputStream(new File(filePath));
                workBook = WorkbookFactory.create(inStream);
                sheet = workBook.getSheet(sheetName);
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try {
                    if(inStream!=null){
                        inStream.close();
                    }
                } catch (IOException 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 (DateUtil.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();
        }
    
        private void getSheetData() {
            listData = new ArrayList<List<String>>();
            mapData = new ArrayList<Map<String, String>>();
            columnHeaderList = new ArrayList<String>();
            int numOfRows = sheet.getLastRowNum() + 1;
            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);
                        if (i == 0){
                            columnHeaderList.add(getCellValue(cell));
                        }
                        else{
                            map.put(columnHeaderList.get(j), this.getCellValue(cell));
                        }
                        list.add(this.getCellValue(cell));
                    }
                }
                if (i > 0){
                    mapData.add(map);
                }
                listData.add(list);
            }
            flag = true;
        }
    
        public String getCellData(int row, int col){
            if(row<=0 || col<=0){
                return null;
            }
            if(!flag){
                this.getSheetData();
            }
            if(listData.size()>=row && listData.get(row-1).size()>=col){
                return listData.get(row-1).get(col-1);
            }else{
                return null;
            }
        }
    
        public String getCellData(int row, String headerName){
            if(row<=0){
                return null;
            }
            if(!flag){
                this.getSheetData();
            }
            if(mapData.size()>=row && mapData.get(row-1).containsKey(headerName)){
                return mapData.get(row-1).get(headerName);
            }else{
                return null;
            }
        }
    
    }
    

      

    ExcelTest.java

    package com.nihaorz;
    
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    
    import java.io.File;
    import java.util.Map;
    
    public class ExcelTest {
    
        public static void main(String[] args) throws Exception {
            ExcelReader eh = new ExcelReader("C:\Users\Nihaorz\Desktop\贺站.xlsx", "Sheet1");
            eh.getCellData(1,1);
            Map<String, String> map = eh.getAllData();
    
            String filePath = "C:\Users\Nihaorz\Desktop\待修改.xls";
            // Excel获得文件
            Workbook workBook = Workbook.getWorkbook(new File(filePath));
            // 打开一个文件的副本,并且指定数据写回到原文件
            WritableWorkbook book = Workbook.createWorkbook(new File(filePath), workBook);
    
            Sheet sheet = book.getSheet(0);
            WritableSheet wsheet = book.getSheet(0);
            int colunms = sheet.getColumns();
            for (int i = 0; i < sheet.getRows(); i++) {
                String number = sheet.getCell(4, i).getContents().trim();
                if(map.containsKey(number)){
                    Cell cell = wsheet.getCell(13, i);
                    String address = cell.getContents().trim();
                    if(address == null  || "".equals(address)){
                        Label label = new Label(colunms, i, map.get(number), getDataCellFormat());
                        wsheet.addCell(label);
                    }
                }
            }
            book.write();
            book.close();
        }
    
        public static WritableCellFormat getDataCellFormat() {
            WritableFont wf = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            return wcf;
        }
    
    }
    

      

  • 相关阅读:
    D
    NOI 1.7编程基础之字符串(35题)
    HYSBZ 2145 悄悄话
    POJ 2406 Power Strings
    POJ 3461 Oulipo[附KMP算法详细流程讲解]
    POJ 3974 Palindrome
    POJ 1002 487-3279
    POJ 1182 食物链
    POJ 2524 Ubiquitous Religions
    HDU 1251 统计难题
  • 原文地址:https://www.cnblogs.com/nihaorz/p/7509452.html
Copyright © 2011-2022 走看看