Java poi导出excel合并标题单元格



<span style="font-size:18px;">package test;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Test {

    public static void main(String[] args) {
        try {
            //reportXls(getListmap());
            reportMergeXls(getListmap(),"test1","sheet1");
            System.out.println("导出完成");
        }catch (Exception e){
            e.printStackTrace();
        }

    }
    public static  List<Map> getListmap(){
        List<Map> list=new ArrayList<Map>();
        Map map1=new HashMap();
        map1.put("id",1);
        map1.put("name","a");
        map1.put("value1","1a");
        map1.put("value2","2a");
        map1.put("value3","3a");

        Map map2=new HashMap();
        map2.put("id",2);
        map2.put("name","b");
        map2.put("value1","1b");
        map2.put("value2","2b");
        map2.put("value3","3b");

        Map map3=new HashMap();
        map3.put("id",3);
        map3.put("name","c");
        map3.put("value1","1c");
        map3.put("value2","2c");
        map3.put("value3","3c");

        list.add(map1);
        list.add(map2);
        list.add(map3);

        return list;

    }
    static String[] excelHeader = { "id", "name", "value","value","value"};
    public static void  reportXls(List<Map> list){
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("test1");//创建一个sheet-test1

        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

        HSSFRow row = sheet.createRow((int) 0);
        for (int i = 0; i < excelHeader.length; i++) {//设置表头-标题
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(excelHeader[i]);
            cell.setCellStyle(style);
            sheet.autoSizeColumn(i);//自动设宽
        }

        for (int i = 0; i < list.size(); i++) {//设置列值-内容
            row = sheet.createRow(i + 1);
            Map map = list.get(i);
            row.createCell(0).setCellValue((int)map.get("id"));
            row.createCell(1).setCellValue((String)map.get("name"));
            row.createCell(2).setCellValue((String)map.get("value1"));
            row.createCell(3).setCellValue((String)map.get("value2"));
            row.createCell(4).setCellValue((String)map.get("value3"));
        }

        try {
            FileOutputStream fileOut = new FileOutputStream("E:/test.xls");
            wb.write(fileOut);
            fileOut.close();
            System.out.println("输出完成");
        } catch (Exception e) {
            System.out.println("文件输出失败!");
            e.printStackTrace();
        }

    }

    /**
     * 导出xls文件(合并单元格)
     * @param list
     * @param xlsFileName
     * @param sheetName
     */
    public static void reportMergeXls(List<Map> list,String xlsFileName,String sheetName) throws Exception{
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet(sheetName);//创建一个sheet-test1

        //设置单元格风格,居中对齐.
        HSSFCellStyle cs = wb.createCellStyle();
        cs.setAlignment(HSSFCellStyle.ALIGN_CENTER);

        cs.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
        cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
        cs.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
        cs.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框

        //设置字体:
        HSSFFont font = wb.createFont();
        font.setFontName("黑体");
        font.setFontHeightInPoints((short) 12);//设置字体大小
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示

        cs.setFont(font);//要用到的字体格式

        //sheet.setColumnWidth(0, 3766); //第一个参数代表列下标(从0开始),第2个参数代表宽度值
        //cs.setWrapText(true);//设置字体超出宽度自动换行

        //设置背景颜色
        //cs.setFillBackgroundColor(HSSFColor.BLUE.index);
        //cs.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);


        //创建第一行
        HSSFRow row = sheet.createRow((short) 0);
        HSSFCell cell ;

        for (int i = 0; i < excelHeader.length; i++) {//设置表头-标题
            cell = row.createCell(i);
            cell.setCellValue(excelHeader[i]);
            cell.setCellStyle(cs);
            sheet.autoSizeColumn(i);//自动设宽
        }

        //设置合并的标题头(注意:横向合并的时候,标题头单元格必须长度和内容单元格一致否则合并时会把其他标题头单元格内容挤掉)
        sheet.addMergedRegion(new CellRangeAddress(0,0,2,4));//横向:合并第一行的第2列到第4列
        sheet.addMergedRegion(new CellRangeAddress(0,1,0,0));//纵向:合并第一列的第1行和第2行第
        sheet.addMergedRegion(new CellRangeAddress(0,1,1,1));//纵向:合并第二列的第1行和第2行第

        //设置对应的合并单元格标题
        row = sheet.createRow(1);
        for (int j = 2; j < 5; j++) {
            cell = row.createCell((short)j);
            cell.setCellStyle(cs);
            cell.setCellValue("value" + (j-1));
            sheet.autoSizeColumn(j);//自动设宽
        }
        //设置列值-内容
        for (int i = 0; i < list.size(); i++) {
            row = sheet.createRow(i + 2);
            Map map = list.get(i);
            row.createCell(0).setCellValue((int)map.get("id"));
            row.createCell(1).setCellValue((String)map.get("name"));
            row.createCell(2).setCellValue((String)map.get("value1"));
            row.createCell(3).setCellValue((String)map.get("value2"));
            row.createCell(4).setCellValue((String)map.get("value3"));
        }

        try {
            FileOutputStream fileOut = new FileOutputStream("E:/"+xlsFileName+".xls");
            wb.write(fileOut);
            fileOut.close();
            System.out.println("输出完成");
            /*//页面弹出下载或保存
            response.setContentType("application/x-download");
            response.setHeader("Content-disposition","attachment;filename="+ new String("test.xls".getBytes("utf-8"), "iso-8859-1"));
            response.setCharacterEncoding("utf-8");
            OutputStream os=response.getOutputStream();

            wb.write(os);

            os.close();
             */
        } catch (Exception e) {
            System.out.println("文件输出失败!");
            e.printStackTrace();
        }

    }

}
</span>


  • 9
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Java导出excel合并标题单元格,你可以使用Apache POI库。下面是一个示例代码,展示了如何创建一个excel文件,设置标题合并单元格。 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelExporter { public static void main(String[] args) { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 设置标题样式 CellStyle titleStyle = workbook.createCellStyle(); Font titleFont = workbook.createFont(); titleFont.setFontName("Arial"); titleFont.setFontHeightInPoints((short) 14); titleFont.setBold(true); titleStyle.setFont(titleFont); // 创建标题行 Row titleRow = sheet.createRow(0); Cell titleCell = titleRow.createCell(0); titleCell.setCellValue("合并标题单元格"); titleCell.setCellStyle(titleStyle); // 合并标题单元格 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3)); // 将工作簿写入文件 try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) { workbook.write(outputStream); System.out.println("Excel文件导出成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 请确保在运行代码之前,你已经在项目中添加了Apache POI库的依赖。此示例代码创建一个包含一个合并标题单元格Excel文件,并将其保存为"output.xlsx"。你可以根据需要进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值