java代码生成excel表格

在很多项目中,都需要我们把数据库查询出来的数据导出成excel表格,导出就算了,还给我弄个模板,大标题要写在合并表格里还要居中,标题要有底色,还要加粗,等等,下面我就来讲一下我用到的表格操作:

首先要进行表格操作,要添加相关依赖

这里我重点说明一下,我用4.3及以上版本就不行,可能是方法有升级

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

创建excel文件

如果想生成.xls文件:

Workbook workbook = new HSSFWorkbook();

如果想生成.xlsx文件

Workbook workbook = new XSSFWorkbook();

创建工作簿

也就是我们说的Sheet页,sheet页是根据Workbook对象生成的,也就是sheet页依赖excel文件而存在。

Sheet sheet = workbook.createSheet("Sheet1");  // Sheet1为要生成的sheet页的名称

写入操作

完成以上操作,在不考虑样式的前提下,我们就可以写数据了。写数据的话是按行进行写入的。
首先声明行变量
行是根据sheet声明的,参数为该行的位置(从0开始算)

Row titleRow = sheet.createRow(0);

写入数据
有了行对象,那么我们就可以对该行的某列进行操作了
首先要创建该行某列对象,然后用getCell方法获取单元格,参数为单元格索引位置(从0开始算),然后用setCellValue方法进行内容写入,参数为内容

titleRow.createCell(0);
titleRow.getCell(0).setCellValue("序号");

写完之后,返回workbook对象就可以了。
按这样操作,一份没有样式的表格文件就生成好了。

样式操作

首先要声明样式对象
因为创建的workbook对象方式不同,样式对象的类型也不一样,不过方法是类似的

XSSFCellStyle cellStyle = workbook.createCellStyle();

背景颜色

这里修改只需要改new java.awt.Color里的参数值即可,也支持输入0xff000000(默认值)16进制数
需要与设置填充格式一起使用才生效,使用无先后顺序

cellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(89, 214, 255),new DefaultIndexedColorMap()));

字体居中

cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);  // 垂直居中
cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中

设置边框

BorderStyle.THIN为宽度属性

cellStyle.setBorderBottom(BorderStyle.THIN); // 下边框
cellStyle.setBorderRight(BorderStyle.THIN);  // 右边框
cellStyle.setBorderLeft(BorderStyle.THIN);   // 左边框
cellStyle.setBorderTop(BorderStyle.THIN);    // 上边框

设置填充格式

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

自动换行

cellStyle.setWrapText(true);

字体设置

Font titleFont = workbook.createFont();  // 声明字体对象
titleFont.setBold(true);        // 字体加粗
titleFont.setFontName("华文彩云");  // 字体类型
titleFont.setFontHeightInPoints((short) 20);  // 字体大小
cellStyle.setFont(titleFont);   // 赋值样式对象

设置列宽

sheet.setColumnWidth(0, 4200);  // 第0列列宽设置为4200

合并单元格

sheet.addMergedRegion(new CellRangeAddress(1, 3, 1, 3));  // 参数分别为起始行,结束行,起始列,结束列

返回前端的话,写法是这样的,方法是没有返回的,也就是void

public void index(HttpServletResponse response) {
        XSSFWorkbook workbook = service.test();
        if (workbook!=null){
            String fileName = "1.xlsx";
            try {
                fileName = URLEncoder.encode(fileName, "UTF-8");
                //设置ContentType请求信息格式
                response.setContentType("application/vnd.ms-excel;charset=utf-8");
                response.setHeader("Content-disposition", "attachment;filename=" + fileName);
                OutputStream outputStream = response.getOutputStream();
                workbook.write(outputStream);
                outputStream.flush();
                outputStream.close();
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }

我这边用到的基本是这些,如果有其他的操作可以评论我或者私信我,我这边在做补充

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是生成java代码导入excel表格的示例代码: ``` import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; 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 ExcelImporter { public static void main(String[] args) throws IOException { // 读取Excel文件 File file = new File("data.xlsx"); FileInputStream inputStream = new FileInputStream(file); Workbook workbook = new XSSFWorkbook(inputStream); // 选择第一个工作表 Sheet sheet = workbook.getSheetAt(0); // 遍历每一行 Iterator<Row> iterator = sheet.iterator(); while (iterator.hasNext()) { Row currentRow = iterator.next(); // 读取每个单元格的值 Iterator<Cell> cellIterator = currentRow.iterator(); ArrayList<String> rowData = new ArrayList<>(); while (cellIterator.hasNext()) { Cell currentCell = cellIterator.next(); if (currentCell.getCellType() == CellType.STRING) { rowData.add(currentCell.getStringCellValue()); } else if (currentCell.getCellType() == CellType.NUMERIC) { rowData.add(String.valueOf(currentCell.getNumericCellValue())); } } // 在这里你可以将rowData插入到数据库中,或者进行其他操作 System.out.println(rowData); } // 关闭文件输入流 inputStream.close(); } } ``` 这个示例代码使用了Apache POI库来读取Excel文件,并使用ArrayList来存储每一行的数据。在处理完每一行数据后,你可以将rowData插入到数据库中,或者进行其他操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿背心的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值