码农终将翻身 2024-04-23 14:47 采纳率: 75%
浏览 11
已结题

这种excel 应该怎么生成 java代码 表头表格边框 导出excel

img


这种excel 应该怎么生成 java代码 表头表格边框 导出excel

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-23 14:47
    关注

    引自免费微信小程序:皆我百晓生

    为了生成包含上述内容的Excel文件,你需要使用一个Java库来处理Excel文件。Apache POI 是一个广泛使用的Java库,可以用来创建、修改和读取Microsoft Office格式的文件,包括Excel (.xls and .xlsx)。

    首先,确保你已经在项目中添加了Apache POI依赖项。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>
        </dependency>
    </dependencies>
    

    接下来,我会提供一个简单的Java程序示例,用于创建带有表头和边框的Excel文件,并将数据写入其中。

    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Calendar;
    
    public class ExcelGenerator {
        public static void main(String[] args) throws IOException {
            Workbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿
            Sheet sheet = workbook.createSheet("发票明细表"); // 创建新的工作表
    
            // 设置单元格样式(边框)
            CellStyle headerCellStyle = workbook.createCellStyle();
            headerCellStyle.setBorderBottom(CellStyle.BORDER_THIN);
            headerCellStyle.setBorderTop(CellStyle.BORDER_THIN);
            headerCellStyle.setBorderLeft(CellStyle.BORDER_THIN);
            headerCellStyle.setBorderRight(CellStyle.BORDER_THIN);
    
            // 写入表头
            Row headerRow = sheet.createRow(0); // 第一行作为表头
            for (int i = 0; i <= 10; i++) { // 假设列数为11
                Cell cell = headerRow.createCell(i);
                cell.setCellValue("标题 " + (i + 1));
                cell.setCellStyle(headerCellStyle);
            }
    
            // 写入其他行数据
            int rowIndex = 1; // 从第二行开始写入数据
            for (int i = 0; i < 5; i++) { // 假设有5条数据
                Row dataRow = sheet.createRow(rowIndex++);
                dataRow.createCell(0).setCellValue("数据" + (i + 1)); // 序号
                dataRow.createCell(1).setCellValue(Calendar.getInstance().getTime()); // 日期
                dataRow.createCell(2).setCellValue("会员名称登记号 " + (i + 1)); // 会员名称登记号
                // ... 其他列的数据
            }
    
            // 合计行
            Row totalRow = sheet.createRow(rowIndex++);
            totalRow.createCell(0).setCellValue("合计:");
    
            // 添加额外的信息到合适的位置
            sheet.getRow(0).getCell(11).setCellValue("填报日期:" + Calendar.getInstance().getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault()) + " " + Calendar.getInstance().get(Calendar.YEAR));
            sheet.getRow(0).getCell(12).setCellValue("代码:34");
            sheet.getRow(0).getCell(13).setCellValue("(盖章)");
            sheet.getRow(0).getCell(14).setCellValue("管税务所(盖章):");
            sheet.getRow(0).getCell(15).setCellValue("审核人:");
            sheet.getRow(0).getCell(16).setCellValue("分管所长:");
            sheet.getRow(0).getCell(17).setCellValue("发送日期:");
    
            try (FileOutputStream outputStream = new FileOutputStream("invoice_details.xlsx")) {
                workbook.write(outputStream); // 将工作簿写入文件
            } finally {
                workbook.close(); // 关闭工作簿
            }
        }
    }
    

    这个程序会生成一个名为invoice_details.xlsx的Excel文件,包含了表头、数据以及一些额外的信息。你可以根据实际需求调整数据和样式设置。注意,这个示例中的数据是静态的,你可能需要从数据库或其他数据源动态获取数据并填充到Excel中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 4月23日