• java Workbook 读写excel


    1. 读取具体位置的excel数据

    复制代码
    package com.royan.weakey.platform.common.excel;
    
    import lombok.extern.slf4j.Slf4j;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * read  a excel file of the definite path
     */
    @Slf4j
    public class ReadExcel<T> {
    
    
        public static void main(String[] args) {
            ReadExcel<String> obj = new ReadExcel<>();
            File file = new File("path");
            List<List<List>> excelList = obj.readExcel(file);
            excelList.forEach(sheet -> {
                sheet.forEach(row -> {
                    row.forEach(column -> {
                        System.out.print(column + " ");
                    });
                    System.out.println();
                });
    
            });
    
        }
    
    
        public List<List<List>> readExcel(File file) {
            try {
                //create input stream ,get data
                InputStream stream = new FileInputStream(file);
                Workbook wb = new HSSFWorkbook(stream);
                int sheetSize = wb.getNumberOfSheets();
                List<List<List>> sheetList = new ArrayList<>();
                for (int i = 0; i < sheetSize; i++) {
                    List<List> outerList = new ArrayList<>();
                    Sheet sheet = wb.getSheetAt(i);
                    for (int j = 0; j <= sheet.getLastRowNum(); j++) {
                        List<String> list = new ArrayList<>();
                        for (int c = 0; c < sheet.getRow(j).getLastCellNum(); c++) {
                            Cell cell = sheet.getRow(j).getCell(c);
                            String str = cell.getStringCellValue();
                            list.add(str);
                        }
                        outerList.add(list);
                    }
                    sheetList.add(outerList);
                }
                return sheetList;
    
            } catch (Exception e) {
                log.info(e.getMessage());
            }
            return null;
    
        }
    
    
    }
    复制代码

    2.将数据写入指定的位置的excel

    复制代码
    package com.royan.weakey.platform.common.excel;
    
    import com.google.common.collect.Lists;
    import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    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.xssf.usermodel.XSSFWorkbook;
    
    import java.io.*;
    import java.util.*;
    
    /**
     * writeExcel
     */
    @Slf4j
    public class WriteExcel {
        private static final String EXEL_XLS = "xls";
        private static final String EXEL_XLSX = "xlsx";
    
    
        public static void writeExcel(List<Map> dataList, String filePath, List<String> header) {
            OutputStream out = null;
            try {
    
                /**
                 read  excel document
                 */
                File file = new File(filePath);
                Workbook workbook = null;
                if (file.isDirectory()) {
                    // default create .xls
                    workbook = new HSSFWorkbook();
                } else if (file.getName().endsWith(".xls")) {
                    workbook = new HSSFWorkbook();
                } else if (file.getName().endsWith(".xlsx")) {
                    workbook = new XSSFWorkbook();
                } else
                    throw new Exception("please get  .xls .xlsx end or directory,[" + filePath + "]");
                //if only support  single sheet
                Sheet sheet = workbook.createSheet("data");
                //set excel header
                Row fisrtRow = sheet.createRow(0);
                int columnCount = header.size();
                for (int h = 0; h < columnCount; h++) {
                    fisrtRow.createCell(h).setCellValue(header.get(h));
                }
                /**
                 * fill up  data in excel
                 */
                int i = 1;
                for (Map data : dataList) {
                    Row row = sheet.createRow(i);
                    Object[] arrays = data.values().toArray();
                    for (int j = 0; j < columnCount; j++) {
                        Object obj = arrays[j];
                        row.createCell(j).setCellValue(obj != null ? obj.toString() : "");
                    }
                    i++;
                }
                out = new FileOutputStream(file.isDirectory() ? filePath + "/" + header.get(0) + ".xls" : filePath);
                workbook.write(out);
    
            } catch (Exception e) {
                log.info("exception {}", e);
            } finally {
    
                try {
                    if (out != null) {
                        out.flush();
                        out.close();
                    }
                } catch (IOException o) {
                    log.info("exception {}", o);
                }
                log.info("data output success");
            }
    
    
        }
    
    
        public static void main(String[] args) {
            Map<String, Object> dataMap = new HashMap<>();
            dataMap.put("BankName", "BankName");
            dataMap.put("Addr", "Addr");
            dataMap.put("Phone", "Phone");
            Map<String, Object> dataMap1 = new HashMap<>();
            dataMap1.put("BankName", "BankName1");
            dataMap1.put("Addr", "Addr1");
            dataMap1.put("Phone", "Phone1");
            List<String> header = new LinkedList<>();
            header.add("BankName");
            header.add("Addr");
            header.add("Phone");
            List<Map> list = new ArrayList<>();
            list.add(dataMap);
            list.add(dataMap1);
            writeExcel(list, "/Users/caibixiang/workSoftware/log", header);
    
        }
    
    }

    转自:https://www.cnblogs.com/caibixiang123/p/10164423.html

  • 相关阅读:
    socket 中文man页面函数
    指针和数组(上)
    char和unsigned char--数据类型区别
    自己的总结
    warning C4305:“初始化”:从“double”到“float”截断
    指针数组和数组指针区别
    Python模块常用的几种安装方式
    Jenkins环境搭建
    wxPython:事件
    wx.ListCtrl简单使用例子
  • 原文地址:https://www.cnblogs.com/javalinux/p/15693005.html
Copyright © 2020-2023  润新知