excel表格生成,导出

package com.ky.sdn.fk.common.util;

import java.io.FileOutputStream;
import java.io.IOException;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelWriteUtil {

    /**
     * 创建新excel.
     *
     * @param fileDir
     *            excel的路径
     * @param sheetName
     *            要创建的表格索引
     * @param titleRow
     *            excel的第一行即表格头
     */
    public static void createExcel(String fileDir, String sheetName1, String titleRow1[], String sheetName2, String titleRow2[], String sheetName3, String titleRow3[]) throws Exception {
        // 创建workbook
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 添加Worksheet(不添加sheet时生成的xls文件打开时会报错)
        HSSFSheet sheet1 = workbook.createSheet(sheetName1);
        HSSFSheet sheet2 = workbook.createSheet(sheetName2);
        HSSFSheet sheet3 = workbook.createSheet(sheetName3);
        sheet1.setColumnWidth(0, 4000);
        sheet1.setColumnWidth(1, 4000);
        sheet2.setColumnWidth(0, 4000);
        sheet3.setColumnWidth(0, 4000*3);
        sheet3.setColumnWidth(1, 4000*2);
        sheet3.setColumnWidth(2, 4000);
        sheet3.setColumnWidth(3, 4000);
        sheet3.setColumnWidth(4, 4000);
        sheet3.setColumnWidth(5, 4000);
        // 新建文件
        FileOutputStream out = null;
        try {
            // 添加表头
            HSSFRow row1 = workbook.getSheet(sheetName1).createRow(0); // 创建第一行
            for (short i = 0; i < titleRow1.length; i++) {
                HSSFCell cell1 = row1.createCell(i);
                cell1.setCellValue(titleRow1[i]);
            }
            HSSFRow row2 = workbook.getSheet(sheetName2).createRow(0); // 创建第一行
            for (short i = 0; i < titleRow2.length; i++) {
                HSSFCell cell2 = row2.createCell(i);
                cell2.setCellValue(titleRow2[i]);
            }
            HSSFRow row3 = workbook.getSheet(sheetName3).createRow(0); // 创建第一行
            for (short i = 0; i < titleRow3.length; i++) {
                HSSFCell cell3 = row3.createCell(i);
                cell3.setCellValue(titleRow3[i]);
            }
            out = new FileOutputStream(fileDir);
            workbook.write(out);
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 往excel中写入(已存在的数据无法写入).
     *
     * @param fileDir
     *            文件路径
     * @param sheetName
     *            表格索引
     * @param object
     * @throws Exception
     */
    public static void writeToExcel(String fileDir, String sheetName, List<Map> mapList) throws Exception {
        // 创建workbook
        HSSFWorkbook workbook = null;
        File file = new File(fileDir);
        try {
            workbook = new HSSFWorkbook(new FileInputStream(file));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 流
        FileOutputStream out = null;
        HSSFSheet sheet = workbook.getSheet(sheetName);
        System.out.println(sheet.getSheetName());
        // 获取表格的总行数
//        int rowCount = sheet.getLastRowNum() + 1; // 需要加一
        // 获取表头的列数
        int columnCount = sheet.getRow(0).getLastCellNum();
        try {
            // 获得表头行对象
            HSSFRow titleRow = sheet.getRow(0);
            if (titleRow != null) {
                for (int rowId = 0; rowId < mapList.size(); rowId++) {
                    Map map = mapList.get(rowId);
                    HSSFRow newRow = sheet.createRow(rowId + 1);
                    for (short columnIndex = 0; columnIndex < columnCount; columnIndex++) { // 遍历表头
                        String mapKey = titleRow.getCell(columnIndex).toString().trim();
                        HSSFCell cell = newRow.createCell(columnIndex);
                        cell.setCellValue(map.get(mapKey) == null ? null : map.get(mapKey).toString());
                    }
                }
            }
            out = new FileOutputStream(fileDir);
            workbook.write(out);
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

<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>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.14</version>
        </dependency>

猜你喜欢

转载自blog.csdn.net/alyone_23/article/details/82256614