Java生成Excel表格

在学习生成Excel之前,我们首先了解一下什么是POI;

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

下面是一个demo,也有比较详细的注解:

package test;

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//导出Excel表
public class PoiTest {
    public static String outputFile = "D:\\test.xls";
    public static void main(String[] args) {
        PoiTest poiTest = new PoiTest();
        poiTest.createbook(outputFile);
    }

    public HSSFWorkbook createbook(String fileName) {
            // 创建Excel工作簿
            HSSFWorkbook workbook = new HSSFWorkbook();
            // 在Excel工作簿中创建工作表
            HSSFSheet sheet = workbook.createSheet("测试");// 带有表名的
            // HSSFSheet sheet = workbook.createSheet();
            HSSFCellStyle style = workbook.createCellStyle();
            HSSFFont font = workbook.createFont();
            font.setFontHeightInPoints((short) 12);// 设置字体大小
            font.setFontName("微软雅黑");
            style.setFont(font);
            // 在索引0的位置创建行(最顶端的行)
            HSSFRow headrow = sheet.createRow((short) 0);
            // 在索引0的位置创建单元格(左上端)
            for (int j = 0; j < 5; j++) {
                HSSFCell cell = headrow.createCell(j);
                // 定义单元格为字符串类型
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                // 在单元格中输入一些内容
                cell.setCellValue("姓名 " + j);
                cell.setCellStyle(style);
            }
            for (int k = 1; k < 10; k++) {
                HSSFRow row = sheet.createRow((short) k);
                for (int n = 0; n < 5; n++) {
                    HSSFCell cell = row.createCell(n);
                    // 定义单元格为字符串类型
                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                    // 在单元格中输入一些内容
                    cell.setCellValue("张三" + n);
                    cell.setCellStyle(style);
                }
            }
            try {
            // 新建一个输出文件流
            FileOutputStream fOut = new FileOutputStream(outputFile);
            // 把相应的Excel工作簿存盘
            workbook.write(fOut);
            fOut.flush();
            // 操作结束,关闭文件
            fOut.close();
            System.out.println("文件生成");
            } catch (Exception e) {
            }
        return workbook;

    }
}