Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...

本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)。

/**
     * 按列写入Excel并设置格式
     * 
     * @param outputUrl
     *            输出路径
     * @param sheetName
     *            工作薄名称
     * @param titles
     *            表头
     * @param arrayList
     *            表头数据
     * @throws IOException
     * @throws RowsExceededException
     * @throws WriteException
     */
    public static void writeExcel(String outputUrl, String sheetName, String[] titlesArray,
            ArrayList<String>... arrayList) throws IOException, RowsExceededException, WriteException {
        if (outputUrl == null || outputUrl.length() == 0) {
            System.out.println(
                    "Param(s) Error:outputUrl is required and the length of outputUrl is required greater than 0.");
            return;
        }
        int n = arrayList.length;
        if (titlesArray.length != n) {
            System.out.println("Param(s) Error:the titles' length is hoped to be equal to arrayList's length.");
            return;
        }
        //创建Excel文件
        File file = new File(outputUrl);
        file.createNewFile();
        //创建工作簿
        WritableWorkbook workbook = Workbook.createWorkbook(file);
        //创建sheet,设置名称为sheetName,默认Sheet1
        if (sheetName == null || sheetName.length() == 0) {
            sheetName = "Sheet1";
        }
        WritableSheet sheet = workbook.createSheet(sheetName, 0);
        //设置titles
        String[] titles = titlesArray;
        //设置表头:列名和各种格式
        for (int i = 0; i < titles.length; i++) {
            WritableFont font = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);
            CellView cellView = new CellView();
            cellView.setAutosize(true); //设置自动大小  
            sheet.setColumnView(i, cellView); //根据内容自动设置列宽  
            WritableCellFormat format = new WritableCellFormat(font);
            format.setAlignment(Alignment.CENTRE); //居中对齐
            format.setBackground(Colour.YELLOW); //背景色
            format.setBorder(Border.ALL, BorderLineStyle.THICK, Colour.BLACK);//边框
            Label label = new Label(i, 0, titles[i], format);
            sheet.addCell(label);
        }
        //写入数据,并设置一些格式
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < arrayList[i].size(); j++) {
                //WritableFont.createFont("宋体"):设置字体为宋体
                //10:设置字体大小
                //WritableFont.BOLD:设置字体加粗(BOLD:加粗 NO_BOLD:不加粗)
                //false:设置非斜体
                //UnderlineStyle.NO_UNDERLINE:没有下划线
                WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD);
                WritableCellFormat format = new WritableCellFormat(font);
                Label label = new Label(i, j + 1, arrayList[i].get(j), format);
                sheet.addCell(label);
            }
        }
        //写入数据
        workbook.write();
        //关闭工作簿
        workbook.close();
    }

测试代码:

public static void main(String[] args) throws Exception {
        String txtUrl = "C:\\Users\\Administrator\\Desktop\\匹配.txt";
        ArrayList<String> list1 = ExcelReadUtil.readBookName(txtUrl);
        ArrayList<String> list2 = ExcelReadUtil.readFilePath(txtUrl);
        String[] titles = { "书名", "路径" };
        writeExcel("C:\\Users\\Administrator\\Desktop\\匹配.xls", "匹配", titles, list1, list2);
    }

测试结果;

 

转载于:https://www.cnblogs.com/sgh1023/p/10026817.html

可以使用 EasyExcel设置 Excel 表格的样式和格式,以下是 Java 代码示例: ```java // 创建ExcelWriter对象 ExcelWriter excelWriter = EasyExcel.write("output.xlsx").build(); // 设置Excel样式 WriteCellStyle headStyle = new WriteCellStyle(); headStyle.setFillForegroundColor(IndexedColors.BLUE.getIndex()); // 设置Excel头部样式,前3列背景为蓝色 WriteSheet writeSheet = EasyExcel.writerSheet(0) .headStyle(headStyle) .registerWriteHandler(new CustomCellWriteHandler(2, headStyle)) .build(); // 写入数据 List<List<String>> data = new ArrayList<>(); for (int i = 0; i < 10; i++) { List<String> rowData = new ArrayList<>(); for (int j = 0; j < 5; j++) { rowData.add("cell_" + i + "_" + j); } data.add(rowData); } excelWriter.write(data, writeSheet); // 关闭ExcelWriter对象 excelWriter.finish(); ``` 上述代码中,我们首先创建了一个 `ExcelWriter` 对象,然后定义了一个 `WriteCellStyle` 对象 `headStyle`,并将其背景色设置为蓝色。接着,我们使用 `EasyExcel` 提供的 `writerSheet` 方法创建了一个 `WriteSheet` 对象,并通过 `headStyle` 和 `CustomCellWriteHandler` 对象设置Excel 表格头部的样式,让前三列的背景色变为蓝色。最后,我们使用 `ExcelWriter` 对象的 `write` 方法将数据写入 Excel 表格中,最后关闭 `ExcelWriter` 对象。 需要注意的是,上述代码中的 `CustomCellWriteHandler` 是一个自定义单元格写入处理器,用于设置 Excel 表格中单元格的样式。以下是 `CustomCellWriteHandler` 的代码示例: ```java public class CustomCellWriteHandler extends AbstractCellStyleStrategy { private int columnIndex; private WriteCellStyle cellStyle; public CustomCellWriteHandler(int columnIndex, WriteCellStyle cellStyle) { this.columnIndex = columnIndex; this.cellStyle = cellStyle; } @Override protected void setContentCellStyle(Cell cell, Head head, Integer relativeRowIndex) { if (head.getColumnIndex() <= columnIndex) { cell.setCellStyle(cellStyle); } } } ``` 上述代码中,我们继承了 `AbstractCellStyleStrategy` 类,实现了其中的 `setContentCellStyle` 方法。在该方法中,我们判断当前单元格的列索引是否小于或等于指定的列索引,如果是,则将单元格的样式设置为指定的样式。这样,就可以实现前三列的背景色为蓝色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值