`
shuai1234
  • 浏览: 973400 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

POI生成excel表格,如何合并单元格

    博客分类:
  • java
阅读更多



Java代码
import java.io.FileOutputStream;   
import java.io.IOException;   
  
import org.apache.poi.hssf.usermodel.HSSFCell;   
import org.apache.poi.hssf.usermodel.HSSFCellStyle;   
import org.apache.poi.hssf.usermodel.HSSFRow;   
import org.apache.poi.hssf.usermodel.HSSFSheet;   
import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
import org.apache.poi.hssf.util.Region;   
  
public class ExcelTest {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) throws IOException {   
  
        try {   
            HSSFWorkbook wb = new HSSFWorkbook();   
            HSSFSheet sheet = wb.createSheet("new   sheet");   
            HSSFCellStyle style = wb.createCellStyle(); // 样式对象   
  
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直   
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平   
            HSSFRow row = sheet.createRow((short) 0);   
            HSSFRow row2 = sheet.createRow((short) 1);   
  
            sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0));   
            HSSFCell ce = row.createCell((short) 0);   
            ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文处理   
            ce.setCellValue("项目\\日期"); // 表格的第一行第一列显示的数据   
            ce.setCellStyle(style); // 样式,居中   
            int num = 0;   
            for (int i = 0; i < 9; i++) { // 循环9次,每一次都要跨单元格显示   
                // 计算从那个单元格跨到那一格   
                int celln = 0;   
                int celle = 0;   
                if (i == 0) {   
                    celln = 0;   
                    celle = 1;   
                } else {   
                    celln = (i * 2);   
                    celle = (i * 2 + 1);   
                }   
                // 单元格合并   
                // 四个参数分别是:起始行,起始列,结束行,结束列   
                sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0,   
                        (short) (celle + 1)));   
                HSSFCell cell = row.createCell((short) (celln + 1));   
                cell.setCellValue("merging" + i); // 跨单元格显示的数据   
                cell.setCellStyle(style); // 样式   
                // 不跨单元格显示的数据,如:分两行,上一行分别两格为一格,下一行就为两格,“数量”,“金额”   
                HSSFCell cell1 = row2.createCell((short) celle);   
                HSSFCell cell2 = row2.createCell((short) (celle + 1));   
                cell1.setEncoding(HSSFCell.ENCODING_UTF_16);   
                cell1.setCellValue("数量");   
                cell1.setCellStyle(style);   
                cell2.setEncoding(HSSFCell.ENCODING_UTF_16);   
                cell2.setCellValue("金额");   
                cell2.setCellStyle(style);   
                num++;   
            }   
  
            // 在后面加上合计百分比   
  
            // 合计 在最后加上,还要跨一个单元格   
            sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0,   
                    (short) (2 * num + 2)));   
            HSSFCell cell = row.createCell((short) (2 * num + 1));   
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cell.setCellValue("合计");   
            cell.setCellStyle(style);   
            HSSFCell cell1 = row2.createCell((short) (2 * num + 1));   
            HSSFCell cell2 = row2.createCell((short) (2 * num + 2));   
            cell1.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cell1.setCellValue("数量");   
            cell1.setCellStyle(style);   
            cell2.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cell2.setCellValue("金额");   
            cell2.setCellStyle(style);   
  
            // 百分比 同上   
            sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0,   
                    (short) (2 * num + 4)));   
            HSSFCell cellb = row.createCell((short) (2 * num + 3));   
            cellb.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cellb.setCellValue("百分比");   
            cellb.setCellStyle(style);   
            HSSFCell cellb1 = row2.createCell((short) (2 * num + 3));   
            HSSFCell cellb2 = row2.createCell((short) (2 * num + 4));   
            cellb1.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cellb1.setCellValue("数量");   
            cellb1.setCellStyle(style);   
            cellb2.setEncoding(HSSFCell.ENCODING_UTF_16);   
            cellb2.setCellValue("金额");   
            cellb2.setCellStyle(style);   
  
            FileOutputStream fileOut = new FileOutputStream("workbook.xls");   
            wb.write(fileOut);   
            fileOut.close();   
            System.out.print("OK");   
        } catch (Exception ex) {   
            ex.printStackTrace();   
        }   
  
    }   
  


分享到:
评论

相关推荐

    poi生成Excel及合并单元格示例

    单元格合并是通过 `Sheet` 对象的 `mergeRegion` 方法实现的,该方法接受两个参数,分别表示要合并的区域的起始和结束单元格索引: ```java // 合并从第二列到第四列的单元格(索引从0开始) sheet.mergeRegions...

    poi获取合并单元格

    3. **自动化测试**:在进行 UI 自动化测试时,可能需要验证页面上的表格是否正确显示了 Excel 文件中的合并单元格。 #### 五、扩展阅读 - [POI 官方文档](https://poi.apache.org/) - [Java 处理 Excel 合并单元格...

    java 后端生成pdf模板合并单元格表格的案例.docx

    本文将详细介绍一个Java后端生成PDF模板,并在此基础上实现单元格合并功能的案例。案例的主要目的是展示如何在Java环境中创建复杂的表格结构,并将其导出为PDF文档。这对于需要自动化报表生成或文档制作的应用场景...

    poi生成excel表格

    Apache POI 是一个开源项目...以上是Apache POI生成Excel表格的基本知识点和操作步骤。通过这些示例,你可以理解如何在Java应用中利用POI进行Excel文件的创建、读取和修改,以及如何结合数据库操作实现数据的导入导出。

    java的poi生成excel图表demo

    通过这个“java的poi生成excel图表demo”,我们可以学习如何利用POI创建动态的、数据驱动的Excel曲线图,进一步提升数据的可视性和理解性。这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件...

    easyuiPoi导出Excel工具类封装(支持合并单元格)

    这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表生成等。EasyUIPoI的名字可能来源于流行的前端框架EasyUI,但其核心功能是后端的Excel处理。 Apache POI是Apache软件基金会...

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    poi生成excel报表合并列

    通过分析和学习这个文件,你可以更好地理解如何用Apache POI生成带有合并列的Excel报表。 总结起来,Apache POI提供了一整套API来操作Excel文件,包括创建、修改和读取。在生成具有合并列和层次结构的报表时,我们...

    将HtmlTable 导出为Execl文件,支持合并单元格、合并行,无需Office支持

    在IT行业中,将HTML表格(HtmlTable)导出为Excel文件是一项常见的需求,尤其是在数据分析、报表生成和数据共享等场景中。本项目提供了一个解决方案,它支持合并单元格和合并行,无需依赖Microsoft Office,这对于...

    poi导出excel表格

    本教程将详细讲解如何使用Apache POI在Web环境中导出Excel表格,避免生成不必要的临时文件,从而优化系统资源管理。 一、Apache POI简介 Apache POI 是一个开源项目,它提供了Java API来处理Microsoft的Office格式...

    android中poi生成word文档和excel文档

    6. **生成Excel文档**:XSSF API允许开发者创建新的Excel工作簿,添加工作表,设置单元格值,格式化单元格等。从XML数据生成Excel,可能需要解析XML,然后根据数据创建对应的行和列。 7. **PoiWordModel**:这个...

    POI生成Excel POI操作Excel POI读取Excel POI类库

    **POI生成Excel** 生成Excel文件主要涉及以下步骤: 1. **创建Workbook对象**:这是Excel文件的顶级容器,可以是XSSFWorkbook(.xlsx格式)或HSSFWorkbook(.xls格式)。 2. **创建Sheet对象**:Sheet代表Excel...

    POI生成excel报表

    ### POI生成Excel报表知识点详解 #### 一、Apache POI简介 Apache POI是Apache软件基金会的一个开源项目,主要用于处理Microsoft Office格式的文件。它提供了API来读写Word、Excel等Office文档格式。其中,处理...

    poi操作excel表格导入和导出

    在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...

    java实现合并单元格的同时并导出excel示例

    Java实现合并单元格的同时并导出Excel示例 Java实现合并单元格的同时并导出Excel是软件开发中常见的一种需求,特别是在报表系统和数据处理中。...最后,我们可以使用HSSFWorkbook对象来生成Excel文件。

    poi 生成Excel的详细例子

    在这个"poi 生成Excel的详细例子"中,我们将深入探讨如何利用Apache POI库来创建、编辑和格式化Excel工作簿。这个例子涵盖了从基本的单元格操作到复杂的样式设定,为开发者提供了全面的参考。 首先,我们需要导入...

    poi复制指定行数的Excel表格内容

    本教程将深入探讨如何使用Apache POI库来复制Excel表格的指定行数及其样式。 首先,让我们理解标题"poi复制指定行数的Excel表格内容"。这指的是使用Apache POI库来复制Excel文件中特定行的数据,并保留原有的格式和...

    POI实现将excel表格转换成html代码

    统计报表功能有excel转html的场景,读取指定位置的excel,将其转换成html...考虑到Apache成熟的Office文档处理工具POI的广受欢迎,POI提供了强大的excel表格处理的能力,不论是读还是写,都对开发人员提供了极大的便利

    Excel报表导出,复杂Excel模板导出(带单元格合并),jxls2

    总结起来,这个项目通过`jxls2`库提供了一种高效、灵活的Excel报表导出解决方案,支持单元格合并和复杂的模板设计,能够满足多样化的需求,对于提升企业级应用的数据处理能力有着显著的作用。开发者只需花费较少的...

Global site tag (gtag.js) - Google Analytics