POI(1) : xls 和 xlsx 的创建与读取

参考 :

https://blog.csdn.net/qq_21137441/article/details/79226171#t7

https://blog.csdn.net/a314774167/article/details/79300320

https://blog.csdn.net/spp_1987/article/details/13769043

引入 maven 坐标:

<dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.0.0</version>
            </dependency>

Test.java

package com.aliyun.et.industry.device.biz.service.impl.test;

import com.aliyun.et.industry.device.common.util.OssClientUtil;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.usermodel.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Iterator;

/**
 * @Auther: liyue
 * @Date: 2018/9/18 15:20
 * @Description:
 */
public class Tset {


    public static void main(String[] args) throws Exception

    {

        String filePath = "/Users/leyili/Desktop/et-industry-device-xls-import-test.xls";//文件路径
        createXls(filePath);
        System.err.println(readXls(filePath));

    }

    public static void createXls(String path) throws Exception {
        File file = new File(path);
        if (file.exists()) {
            file.delete();
        }
        HSSFWorkbook workbook = new HSSFWorkbook();//创建Excel文件(Workbook)

        HSSFCellStyle style = workbook.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);

        HSSFSheet sheet = workbook.createSheet("Sheet1");//创建工作表(Sheet)

        // 设置列宽
        sheet.setColumnWidth(0, 20 * 256);
        sheet.setColumnWidth(1, 20 * 256);
        sheet.setColumnWidth(2, 20 * 256);


        HSSFRow row = sheet.createRow(0);// 创建行,从0开始
        HSSFCell cell = row.createCell(0);// 创建行的单元格,也是从0开始

        cell.setCellValue("测点信息编码");// 设置单元格内容
        row.createCell(1).setCellValue("测点信息名称");// 设置单元格内容,重载
        row.createCell(2).setCellValue("测点值类型");// 设置单元格内容,重载

        for (int i = 1; i < 20; i++) {
            HSSFRow rows = sheet.createRow(i);
            rows.createCell(0).setCellValue("1_"+i+"_测点信息编码");
            rows.createCell(1).setCellValue("2_"+i+"_测点信息名称");
            rows.createCell(2).setCellValue("3_"+i+"_测点值类型");
        }


        FileOutputStream out = new FileOutputStream(path);
        workbook.write(out);//保存Excel文件
        out.close();//关闭文件流
        System.out.println("OK!");
    }

    public static String readXls(String path) {
        String text = "";
        try {
            FileInputStream is = new FileInputStream(path);
            HSSFWorkbook excel = new HSSFWorkbook(is);
            //获取第一个sheet
            HSSFSheet sheet0 = excel.getSheetAt(0);
            for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) {
                HSSFRow row = (HSSFRow) rowIterator.next();
                for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {
                    HSSFCell cell = (HSSFCell) iterator.next();
                    //根据单元的的类型 读取相应的结果
                    if (cell.getCellType() == CellType.STRING) text += cell.getStringCellValue() + "\t";
                    else if (cell.getCellType() == CellType.NUMERIC) text += cell.getNumericCellValue() + "\t";
                    else if (cell.getCellType() == CellType.FORMULA) text += cell.getCellFormula() + "\t";
                }
                text += "\n";

            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return text;
    }

    public static void createXlsx2(String filePath) throws Exception {

        File file = new File(filePath);
        if (file.exists()) {
            file.delete();
        }
        XSSFWorkbook workbook = new XSSFWorkbook();//创建Excel文件(Workbook)
        XSSFSheet sheet = workbook.createSheet("Sheet1");//创建工作表(Sheet)


        sheet.setColumnWidth(0, 200);

        XSSFRow row = sheet.createRow(0);// 创建行,从0开始
        XSSFCell cell = row.createCell(0);// 创建行的单元格,也是从0开始

        cell.setCellValue("测点信息编码");// 设置单元格内容
        row.createCell(1).setCellValue("测点信息名称");// 设置单元格内容,重载
        row.createCell(2).setCellValue("测点值类型");// 设置单元格内容,重载


        // sheet = workbook.createSheet("Test");//创建工作表(Sheet)
        FileOutputStream out = new FileOutputStream(filePath);
        workbook.write(out);//保存Excel文件
        out.close();//关闭文件流
        System.out.println("OK!");
    }


    public static void createXlsx(String filePath) throws Exception {

        File file = new File(filePath);
        if (file.exists()) {
            file.delete();
        }
        XSSFWorkbook workbook = new XSSFWorkbook();//创建Excel文件(Workbook)
        XSSFSheet sheet = workbook.createSheet();//创建工作表(Sheet)
        // sheet = workbook.createSheet("Test");//创建工作表(Sheet)
        FileOutputStream out = new FileOutputStream(filePath);
        workbook.write(out);//保存Excel文件
        out.close();//关闭文件流
        System.out.println("OK!");
    }

    public static String readXlsx(String path) {
        String text = "";
        try {

            OPCPackage pkg = OPCPackage.open(path);
            XSSFWorkbook excel = new XSSFWorkbook(pkg);
            //获取第一个sheet
            XSSFSheet sheet0 = excel.getSheetAt(0);
            for (Iterator rowIterator = sheet0.iterator(); rowIterator.hasNext(); ) {
                XSSFRow row = (XSSFRow) rowIterator.next();
                for (Iterator iterator = row.cellIterator(); iterator.hasNext(); ) {
                    XSSFCell cell = (XSSFCell) iterator.next();
                    //根据单元的的类型 读取相应的结果
                    if (cell.getCellType() == CellType.STRING) text += cell.getStringCellValue() + "\t";
                    else if (cell.getCellType() == CellType.NUMERIC)
                        text += cell.getNumericCellValue() + "\t";
                    else if (cell.getCellType() == CellType.FORMULA) text += cell.getCellFormula() + "\t";

                }

                text += "\n";
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return text;
    }
}

猜你喜欢

转载自blog.csdn.net/Lxinccode/article/details/82761991