(6)POI生成Excel文件

本文介绍了一个使用 Java POI 库创建 Excel 2003 文件(.xls)的方法,包括设置单元格样式、生成表头及填充数据等步骤。提供了完整的示例代码,展示了如何从数据集合中读取信息并将其写入到 Excel 文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import readMSContent.ExcelReader;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class Excel03Writer {

    /**
     * 设置excel文档样式
     * @param workbook excel03文件
     * @param isHeader 是否有头部信息
     * @return HSSFCellStyle
     */
    public static HSSFCellStyle getCellStyle(HSSFWorkbook workbook,boolean isHeader){
        HSSFCellStyle style = workbook.createCellStyle();
        style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style.setLocked(true);
        if (isHeader) {
            style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            HSSFFont font = workbook.createFont();
            font.setColor(HSSFColor.BLACK.index);
            font.setFontHeightInPoints((short) 12);
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            style.setFont(font);
        }        
        return style;
    }

    /**
     * 生成excel的头
     * @param workbook excel
     * @param sheet 表
     * @param headerColumns 表头信息内容
     */
    public  static void generateHeader(HSSFWorkbook workbook,HSSFSheet sheet,String[] headerColumns){
        HSSFCellStyle style = getCellStyle(workbook,true);
        Row row = sheet.createRow(0);
        row.setHeightInPoints(30);
        for(int i=0;i<headerColumns.length;i++){
            Cell cell = row.createCell(i);
            /*excel column formate:column_#_width, excel中每一列的名称*/
            String[] column = headerColumns[i].split("_#_");
            sheet.setColumnWidth(i, Integer.valueOf(column[1]));
            cell.setCellValue(column[0]);
            cell.setCellStyle(style);
        }
    }    

    /**
     * 将data内容的数据写入file这个Excel文件中
     * @param file 保存路径
     * @param data 要保存的内容
     */
    public static void writeXLS(String file,ArrayList<ArrayList<String>> data){
        try{
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet();
            HSSFCellStyle style = getCellStyle(workbook,false);
            int rowNum = 0;
            for(ArrayList<String> list:data){
                Row row = sheet.createRow(rowNum++); 
                row.setHeightInPoints(25);
                for(int i=0;i<list.size();i++){               
                    Cell cell = row.createCell(i);
                    cell.setCellStyle(style);
                    cell.setCellValue(list.get(i));
                }
            }
            FileOutputStream fileOut = new FileOutputStream(file); 
            workbook.write(fileOut); 
            fileOut.close(); 
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * 将data内容的数据写入file这个Excel文件的sheetName表中,并写好头部内容
     * @param file 保存文件
     * @param sheetName 表名
     * @param data 数据
     * @param headerColumns 表头信息 
     */
    public static void writeXLS(String file,String sheetName,ArrayList<ArrayList<String>> data,
            String[] headerColumns){
        try{
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet(sheetName);
            generateHeader(workbook,sheet,headerColumns); 
            HSSFCellStyle style = getCellStyle(workbook,false);
            int rowNum = 0;
            for(ArrayList<String> list:data){
                rowNum++;
                Row row = sheet.createRow(rowNum); 
                row.setHeightInPoints(25);
                for(int i=0;i<list.size();i++){               
                    Cell cell = row.createCell(i);
                    cell.setCellStyle(style);
                    cell.setCellValue(list.get(i));
                }
            }
            FileOutputStream fileOut = new FileOutputStream(file); 
            workbook.write(fileOut); 
            fileOut.close(); 
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Excel03Writer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void main(String args[]){
        String file="E:\\test.xlsx";
        ArrayList<ArrayList<String>> data=ExcelReader.readXLSX(file);
        /*for(ArrayList<String> list: data){
            System.out.println(list);
        }*/
        /*excel column formate:column_#_width, excel中每一列的名称*/
        String[] headers={"User Name_#_3000","Address_#_7000"};
        writeXLS("./test.xls","test",data,headers);
    }

}
要利用POI生成Excel07文件,只需要把上面的代码中所有的HSSF的H改成X,就可以了,这样调用的就是针对Excel07的Excel类了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值