博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POI 生成 xls 文件使用总结(快速入门)
阅读量:5752 次
发布时间:2019-06-18

本文共 3335 字,大约阅读时间需要 11 分钟。

hot3.png

POI眼中的xls文件结构

| - workbook

| ---- sheet
| ------- row
| ---------- cell

workbook就相当于xls文件(在excel中称之为工作簿),一个workbook(工作簿)里可以有多个sheet(工作表),每个工作表里又分为多个row(行),而每个行中又有很多cell(单元格)。

创建一个xls文件的一般步骤

public class Demo {    public static void main(String[] args) {        // 1. 创建workbook        HSSFWorkbook workbook = new HSSFWorkbook();        // 2. 创建工作表        HSSFSheet sheet = workbook.createSheet("我是第一个工作表");        // 3. 创建行        HSSFRow row = sheet.createRow(0);        // 4. 创建单元格        HSSFCell cell = row.createCell(0);        // 5. 为单元格设置内容        cell.setCellValue("这是A1单元格");        // 6. 所有内容设置完毕,导出xls文件        try {            FileOutputStream fileOutputStream = new FileOutputStream("F:/demo.xls");            workbook.write(fileOutputStream);            fileOutputStream.flush();            fileOutputStream.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

输入图片说明

更多的可能性

为单元格设置样式(边框,字体,对齐,颜色,自动换行等)

HSSFCellStyle cellStyle = workbook.createCellStyle();                // 设置上下左右边框        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);        // 设置字体        HSSFFont cellFont = workbook.createFont();        cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 加粗        cellFont.setFontName("微软雅黑"); // 字体        cellFont.setFontHeightInPoints(((short) 12)); // 字号        cellFont.setColor(HSSFColor.BLUE.index); // 颜色        // 将字体绑定到样式中        cellStyle.setFont(cellFont);        // 设置对齐方式        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);        // 设置单元格颜色        cellStyle.setFillForegroundColor(HSSFColor.RED.index);        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);                // 设置自动换行        cellStyle.setWrapText(true);        // 为单元格设置样式        cell.setCellStyle(cellStyle);

颜色样式具体参见:

特别注意:如文章中的颜色为HSSFColor.RED,参数需要传入HSSFColor.RED.index

为xls文件设置列宽和行高

// 设置列宽        sheet.setColumnWidth(0, 20 * 256);        // 设置行高        row.setHeightInPoints(92f);

其中行高可以使用上面的函数,参数为像素值。

但列宽没有提供设置像素值的参数,该函数的第一个参数表示列号(从0开始),第二个参数的单位是1/256个字符宽度,如上面代码,则列宽为20个字符的宽度。

合并单元格

CellRangeAddress cra = new CellRangeAddress(1, 3, 1, 6);        sheet.addMergedRegion(cra);

输入图片说明

其中第一个参数表示开始行,第二个参数表示结束行,第三个参数表示开始列,第四个参数表示结束列

设置超链接

工作簿内的超链接

// 添加超链接        HSSFHyperlink hyperlink = new HSSFHyperlink(Hyperlink.LINK_DOCUMENT);        hyperlink.setAddress("#" + "我是第一个工作表" + "!B1"); // # 后跟 表名, ! 后跟 单元格位置        cell.setHyperlink(hyperlink);        // 设置超链接样式        HSSFCellStyle hyperStyle = sheet.getWorkbook().createCellStyle();        HSSFFont hyperFont = workbook.createFont();        hyperFont.setUnderline((byte) 1);        hyperFont.setColor(HSSFColor.BLUE.index);        hyperFont.setFontName("微软雅黑");        hyperFont.setFontHeightInPoints(((short) 12));        hyperStyle.setFont(hyperFont);        cell.setCellStyle(hyperStyle);

url超链接

// 代码片段,全部请仿照 工作簿内的超链接 代码        HSSFHyperlink hyperlink = new HSSFHyperlink(Hyperlink.LINK_URL);        hyperlink.setAddress("http://www.baidu.com"); // url

其他

输入图片说明

还支持email和文件,这里就不介绍了。

以上是本次使用时的总结,POI非常强大,由于水平有限只能总结这些,但足够平常使用参考。

转载于:https://my.oschina.net/u/2930289/blog/1595058

你可能感兴趣的文章
jQuery插件的开发
查看>>
基础,基础,还是基础之JAVA基础
查看>>
如何成为一个C++高级程序员
查看>>
ant android 打包签名和渠道
查看>>
linux命令学习(1)-awk
查看>>
一个简单的接口,被调用并同步给出响应的方法
查看>>
Hadoop序列化与压缩
查看>>
由“男怕入错行”说开去
查看>>
php-fpm多实例运行
查看>>
CGImageSource对图像数据读取任务的抽象
查看>>
我的友情链接
查看>>
xss test
查看>>
也谈svn分支与合并
查看>>
显式锁(第十三章)
查看>>
微软超融合私有云测试29-SCDPM2016部署之创建保护组备份(备份虚拟机)
查看>>
LBS“他爹”GIS
查看>>
SCCM的证书配置PKI
查看>>
看linux书籍做的一些重要笔记(2011.07.03更新)
查看>>
CString、Char* ,char [20]、wchar_t、unsigned short转化
查看>>
从案例学RxAndroid开发(上)
查看>>