POI如何使用已有Excel作为模板二三事

简介:
  • 关于POI

POI是Apache的一个开源项目,起初的目标是允许用户使用java代码来对Excel进行操作,发展到今天POI本身支持的范围已经逐步扩展到对Microsoft Office主要产品,包括:Excel\Word\PPT\Visio的全面支持,目前稳定版本为3.7,开发版本为3.8。

  • 应用场景

本文仅对项目中遇到的,使用已有Excel作为模板的场景来进行描述。

  • 代码示例

public void demo(){ 
        try {

            // 先读取模板 
            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream( 
                    "c://demo_template.xls")); 
            
            // 基于模板创建workbook 
            HSSFWorkbook workbook = new HSSFWorkbook(fs);

            // 如果模板存在多页的话可以分别取到 
            HSSFSheet sheet_1st = workbook.getSheetAt(0); 
            HSSFSheet sheet_2nd = workbook.getSheetAt(1); 
            
            // 第一页,第一行 
            HSSFRow row = sheet_1st.getRow(0); 
            
            // 取第一个单元格 
            HSSFCell cell = row.getCell(0); 
            
            // 获取单元格字符串值 
            String cellValue = cell.getStringCellValue(); 
            
            // 设置单元格的值 
            cell.setCellValue("demo"); 
            
            // 设置单元格的样式 
            HSSFCellStyle cellStyle  =  workbook.createCellStyle();

            cell.setCellStyle(cellStyle); 
            
            // 使用公式设置文档内超链接 
            cell.setCellFormula(    "HYPERLINK(\"#内容!A1\", \"demo\")"); 
            
            // 使用HSSFHyperlink对象设置URL超链接 
            HSSFHyperlink link = new HSSFHyperlin(HSSFHyperlink.LINK_URL); 
            link.setAddress("http://www.163.com");        
            cell.setHyperlink(link); 
            
            String path = "c://demo.xls"; 
            // 输出Excel 
            FileOutputStream stream  =   new  FileOutputStream(path); 
            workbook.write(stream); 
            
            stream.flush(); 
            stream.close();

        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    }

  • 特别注意

          1. POI读取空行空格问题

 POI对空行或空格是不做处理的,如果Excel模板中第一行和第三行有数据的话,下面的代码:

HSSFRow row = sheet_1st.getRow(1);

取到的是第三行。如果想对第二行进行操作时,需要先创建一行:

HSSFRow row_2nd = sheet_2nd.createRow(1);

同样,单元格的规则也是一样,通过

row.getCell(index)方法未必是想要的单元格,在使用Excel模板时要特别注意。

2. CellStyle优化

同样的CellStyle在workbook中的存在缓存的,具有同样格式的单元格只要复用一份CellStyle即可,不要对每个单元格都重新创建CellStyle实例。

 

本文转自william_xu 51CTO博客,原文链接:http://blog.51cto.com/williamx/735377,如需转载请自行联系原作者

相关文章
|
10月前
|
easyexcel Java 测试技术
读取Excel还用POI?试试这款开源工具EasyExcel
读取Excel还用POI?试试这款开源工具EasyExcel
234 0
|
5月前
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
1865 0
|
5月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
405 0
|
9月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
682 1
|
9月前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
10月前
【POI】常用excel操作方法
【POI】常用excel操作方法
80 1
|
10月前
|
Java Apache 索引
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
POI操作大全(动态合并单元格,为单元格生成一个自定义的数据显示格式,自定义公式计算结果生成,读取excel,word文件在生成图片,word指定位置生成图片)
1251 0
|
3月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
474 10
|
26天前
|
分布式计算 Hadoop 大数据
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
45 10
|
5月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
326 4

热门文章

最新文章