首页 > 编程语言 >java 生成Excel的几种方式

java 生成Excel的几种方式

时间:2023-08-12 22:31:38浏览次数:31  
标签:java String Excel Label new import 几种 sheet

Java生成Excel的几种方式

  1. Apache POI:Apache POI是一个流行的用于处理Microsoft Office文档的Java库。它提供了一组API,可以用于创建、读取和修改Excel文件。可以使用Apache POI来创建新的Excel文件并填充数据,或者将现有的数据导出到Excel文件中。
  2. JExcelAPI:JExcelAPI是另一个用于处理Excel文件的Java库。它提供了一组简单易用的API,可以用于创建、读取和修改Excel文件。可以使用JExcelAPI来创建新的Excel文件并填充数据,或者将现有的数据导出到Excel文件中。
  3. EasyExcel:EasyExcel是阿里巴巴开源的一款基于注解的Java处理Excel的工具库。它提供了一组简单易用的API,可以用于快速创建、读取和写入Excel文件。可以使用EasyExcel来创建、读取和写入Excel文件,并且支持大量的数据量高效导入导出。
  4. Apache POI + Freemarker:结合Apache POI和Freemarker模板引擎,可以实现更加灵活的Excel导出。可以使用Freemarker创建Excel模板,然后使用Apache POI将数据填充到模板中生成最终的Excel文件。
  5. 使用第三方工具:除了上述的库之外,还有一些第三方工具可以帮助您进行Excel导出,例如:Aspose.Cells、JasperReports等。这些工具通常提供了更丰富的功能和更高级的特性,但可能需要付费或具有一定的学习曲线。


Apache POI 示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;

public class ApachePOIExample {

    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Sheet1");

            Row headerRow = sheet.createRow(0);
            createCell(headerRow, 0, "Name");
            createCell(headerRow, 1, "Age");
            createCell(headerRow, 2, "City");

            Row dataRow = sheet.createRow(1);
            createCell(dataRow, 0, "John Doe");
            createCell(dataRow, 1, "30");
            createCell(dataRow, 2, "New York");

            try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
                workbook.write(outputStream);
                System.out.println("Excel generated successfully.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void createCell(Row row, int columnNumber, String cellValue) {
        Cell cell = row.createCell(columnNumber);
        cell.setCellValue(cellValue);
    }
}


  1. JExcelAPI 示例:
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import java.io.File;

public class JExcelAPIExample {

    public static void main(String[] args) {
        try {
            WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
            WritableSheet sheet = workbook.createSheet("Sheet1", 0);

            Label nameLabel = new Label(0, 0, "Name");
            sheet.addCell(nameLabel);

            Label ageLabel = new Label(1, 0, "Age");
            sheet.addCell(ageLabel);

            Label cityLabel = new Label(2, 0, "City");
            sheet.addCell(cityLabel);

            Label nameValue = new Label(0, 1, "John Doe");
            sheet.addCell(nameValue);

            Label ageValue = new Label(1, 1, "30");
            sheet.addCell(ageValue);

            Label cityValue = new Label(2, 1, "New York");
            sheet.addCell(cityValue);

            workbook.write();
            workbook.close();

            System.out.println("Excel generated successfully.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. EasyExcel 示例:
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;

import java.util.ArrayList;
import java.util.List;

public class EasyExcelExample {

    public static void main(String[] args) {
        try {
            List<ExcelData> data = new ArrayList<>();
            data.add(new ExcelData("John Doe", "30", "New York"));

            String fileName = "output.xlsx";
            String sheetName = "Sheet1";

            WriteCellStyle headWriteCellStyle = new WriteCellStyle();
            // 设置表头样式

            WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
            // 设置内容样式

            HorizontalCellStyleStrategy styleStrategy =
                    new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

            EasyExcel.write(fileName, ExcelData.class)
                    .sheet(sheetName)
                    .registerWriteHandler(styleStrategy)
                    .doWrite(data);

            System.out.println("Excel generated successfully.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static class ExcelData {
        private String name;
        private String age;
        private String city;

        public ExcelData(String name, String age, String city) {
            this.name = name;
            this.age = age;
            this.city = city;
        }

        // Getters and setters
    }
}

标签:java,String,Excel,Label,new,import,几种,sheet
From: https://blog.51cto.com/u_16176998/7062348

相关文章

  • 【JavaScript40】jquery发送jsonp
    jquery中也提供了jsonp请求服务器端fromflaskimportFlask,render_template,request,make_responseapp=Flask(__name__)@app.route("/")deffunc0():news="这是一个完整的html页面"returnrender_template("index.html",......
  • Java基础01
    idea安装百度搜索idea直接找到官网下载[idea官网](IntelliJIDEA–领先的Java和KotlinIDE(jetbrains.com.cn))(学生可以选择学生版)根据电脑系统选择位数下载,按照提示进行安装(建议不要放c盘)系统检索不到Java版本时自己手动选择安装目录新建项目检查是否安装有问题,打开id......
  • JavaScript
    JavaScripJS介绍JS和html代码的第一种结合方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>javaScript和html的第一种结合方式</title><scripttype="text/javascript">......
  • 《深入理解Java虚拟机》读书笔记:垃圾收集器
    垃圾收集器 HotSpot虚拟机包含的所有收集器如图3-5所示。图3-5展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。新生代收集器:Serial、ParNew、ParallelScavenge,新生代收集器均采用复制算法老年代收集器:SerialOld(标记-整理算法)、Paral......
  • JavaWeb之Servlet入门版教务系统(四)
    之前分享了教务系统中的系统管理模块的具体内容,相信或多或少都收获到了一些东西,今天继续讲述教务系统下的邮件系统模块。首先说一下我写的时候的思路,该模块下主要包含写邮件、收邮件、发邮件、草稿箱、垃圾箱等五个主要功能,用户通过登录系统后,可以在收件箱中看到其他用户给自己发送......
  • 每日汇报 第七周第六天 JAVA开学考程序完成
    今日学习:加上昨天今天JAVA开学考程序终于完成了,代码如下,在论文正文内容输出居中方面还是有问题,想不出解决方案了PaperManagement类:1importjava.util.Scanner;2importjava.util.List;3importjava.util.ArrayList;4importjava.lang.StringBuilder;......
  • Java基础之类变量和类方法
    1、例子现在有这样一个问题:有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?,编写程序解决。 传统的方法来解决,就是用一搞count变量来处理,多一个人就++;这样没有使用oop,不好。解决:使用类变量。我们在创建一个小孩时,就把count加1,并且count是......
  • Odoo12_自定义导出excel
    1.首先按钮或者菜单出发一个后端方法返回url动作defdownload_xxx_excel(self):url='/export_xxx_excel?id={self.id}return{'type':'ir.actions.act_url','url':url,'tar......
  • JavaScript之流程控制
    1流程控制2顺序流程空制顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照(代码的先后顺序,依次执行)程序中大多数的代码都是这样执行的。3分支流程控制if语句3.1分支结构3.2if语句3.2.1语法结构//条件成立执行代码,否则什么也不做if(条件表达式){/......
  • Java中的String方法详解
    (String方法)先进行专栏介绍本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。String详解Java中的String是一个不可变的字符序......