Java创建Excel工作表

一、Maven依赖

    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>4.1.2</version>
    </dependency>   
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>4.1.2</version>
    </dependency>

二、代码示例

    /**
     * @param tableData 文件数据信息
     * @return 文件输入流信息
     */
    // 创建一个Excel文件并填充数据,返回一个InputStream
    private InputStream createImageTextExcelFile(List<List<String>> tableData) {
        // 创建一个新的Excel工作簿
        try (Workbook workbook = new XSSFWorkbook();
             // 创建一个字节输出流
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
            // 创建一个名为Sheet1的工作表
            Sheet sheet = workbook.createSheet("Sheet1");

            // 创建表格标题行
            // 创建第一行
            Row titleRow = sheet.createRow(0);
            // 创建标题单元格样式
            CellStyle titleCellStyle = workbook.createCellStyle();
            // 设置标题样式为水平居中
            titleCellStyle.setAlignment(HorizontalAlignment.CENTER);
            // 创建字体样式
            Font titleFont = workbook.createFont();
            // 设置字体为粗体
            titleFont.setBold(true);
            // 设置字体大小
            titleFont.setFontHeightInPoints((short) 14);
            // 将字体样式应用到标题单元格样式
            titleCellStyle.setFont(titleFont);
            // 在标题行创建一个单元格
            Cell titleCell = titleRow.createCell(0);
            // 设置单元格内容
            titleCell.setCellValue("数据表格第一行标题信息");
            // 应用标题单元格样式
            titleCell.setCellStyle(titleCellStyle);
            // 合并单元格(标题跨越六列)
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5));

            // 创建表头行
            // 创建第二行作为表头
            Row headerRow = sheet.createRow(1);
            List<String> headers = Arrays.asList("列1", "列2", "列3", "列4", "列5", "列6");
            // 遍历表头内容
            for (int i = 0; i < headers.size(); i++) {
                // 创建表头单元格
                Cell headerCell = headerRow.createCell(i);
                // 设置表头单元格内容
                headerCell.setCellValue(headers.get(i));
            }

            // 填充数据内容
            // 遍历数据行
            for (int i = 0; i < tableData.size(); i++) {
                // 创建数据行
                Row dataRow = sheet.createRow(i + 2);
                // 获取一行数据
                List<String> rowData = tableData.get(i);
                // 遍历一行数据的每个单元格
                for (int j = 0; j < rowData.size(); j++) {
                    // 创建数据单元格
                    Cell dataCell = dataRow.createCell(j);
                    // 设置数据单元格内容
                    dataCell.setCellValue(rowData.get(j));
                }
            }
            // 将工作簿内容写入输出流
            workbook.write(outputStream);
            // 将输出流转换为输入流并返回
            return new ByteArrayInputStream(outputStream.toByteArray());
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 发生异常时返回null
        return null;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
public static int createdExcel(String PATH, List list, String title, String[] rowsName, String merged) { try { File myFile = new File(PATH); if (!myFile.exists()) { myFile.createNewFile(); } WritableWorkbook wbook = Workbook.createWorkbook(myFile); // 创建一个可写返回工作薄同给定文件名 WritableSheet wsheet = wbook.createSheet(title, 0); // sheet名称 // 设置字体 WritableFont wfont = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.BOLD); WritableCellFormat wcfFC = new WritableCellFormat(wfont); wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); //单元格边缘线格式设置 wcfFC.setAlignment(jxl.format.Alignment.CENTRE); // 居中对齐 wcfFC.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中 //wcfFC.setBackground(jxl.format.Colour.BLUE); // 蓝色底 // 设置行高和列宽 //wsheet.setColumnView(列数, 列宽); //wsheet.setRowView(行数, 行高); // 开始生成主体内容 for (int i = 0 ; i < rowsName.length; i++) { wsheet.addCell(new Label(i, 0, rowsName[i], wcfFC)); wsheet.setColumnView(i, 12); } wfont = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD); wcfFC = new WritableCellFormat(wfont); wcfFC.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); //单元格边缘线格式设置 //是数字时的格式化 // jxl.write.NumberFormat numberFormat = new jxl.write.NumberFormat(NumberFormat.CURRENCY_DOLLAR); // jxl.write.WritableCellFormat wcfFCNUMBER = new jxl.write.WritableCellFormat(wfont,numberFormat); // wcfFCNUMBER.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); //单元格边缘线格式设置 // wcfFCNUMBER.setAlignment(jxl.format.Alignment.CENTRE); // 居中对齐 // wcfFCNUMBER.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //垂直居中 //是数字时的格式化 wcfFC.setWrap(true); //合并单元格操作 //wsheet.mergeCells(坐标列1, 坐标行1, 坐标列2, 坐标行2) for (int i = 0; i < list.size(); i++) { String[] args = (String[]) list.get(i); for (int j = 0; j < args.length; j ++) { if (args[j].length()<15 ) { wsheet.addCell(new jxl.write.Number(j, i+1, Float.parseFloat(args[j]), wcfFC)); } else { wsheet.addCell(new Label(j, i+1, args[j], wcfFC)); } } if (merged.indexOf("," + (i+1) + ",") >=0) { wsheet.mergeCells(0, i+1, args.length-1, i+1); wsheet.setRowView(i, 1000); } //打印分页符 if (i % 20 == 0) { //wsheet.addRowPageBreak(i); } } // 主体内容生成结束 wbook.write(); // 写入文件 wbook.close(); return 1; } catch (Exception ex) { ex.printStackTrace(); return 0; } }
以下是一个简单的Java代码示例,用于将数据导出为Excel格: ``` import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelExporter { public void exportDataToExcel(List<String[]> data, String fileName) throws IOException { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); int rowNum = 0; for (String[] rowData : data) { Row row = sheet.createRow(rowNum++); int colNum = 0; for (String cellData : rowData) { Cell cell = row.createCell(colNum++); cell.setCellValue(cellData); } } FileOutputStream outputStream = new FileOutputStream(fileName); workbook.write(outputStream); workbook.close(); outputStream.close(); } public static void main(String[] args) throws IOException { List<String[]> data = new ArrayList<String[]>(); data.add(new String[] {"Name", "Age", "Gender"}); data.add(new String[] {"John", "25", "Male"}); data.add(new String[] {"Jane", "30", "Female"}); ExcelExporter exporter = new ExcelExporter(); exporter.exportDataToExcel(data, "example.xlsx"); } } ``` 这个例子使用Apache POI库来创建Excel工作簿和工作,然后循环遍历数据列并将其写入单元格中。最后,将工作簿写入文件并关闭它。在主方法中,创建一个包含示例数据的数据列,然后将其传递给导出器对象,并指定要导出的文件名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值