当前位置: 首页 > news >正文

Java使用POI创建带样式和公式的Excel文件

这篇文章将演示如何使用POI 创建带样式和公式的Excel文件。

代码

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.IOException;public class ExcelDemo {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Demo Sheet");// 创建标题行并设置样式Row headerRow = sheet.createRow(0);CellStyle headerStyle = workbook.createCellStyle();Font headerFont = workbook.createFont();headerFont.setBold(true);headerStyle.setFont(headerFont);String[] headers = {"Name", "Age", "Salary", "Total"};for (int i = 0; i < headers.length; i++) {Cell cell = headerRow.createCell(i);cell.setCellValue(headers[i]);cell.setCellStyle(headerStyle);}// 创建数据行Object[][] data = {{"John Doe", 30, 4000},{"Jane Smith", 25, 3500},{"Jack Johnson", 35, 4500}};for (int i = 0; i < data.length; i++) {Row row = sheet.createRow(i + 1);for (int j = 0; j < data[i].length; j++) {row.createCell(j).setCellValue(data[i][j].toString());}// 添加公式计算总数row.createCell(data[i].length).setCellFormula(String.format("C%d*12", i + 2));}// 自动调整列宽for (int i = 0; i < headers.length; i++) {sheet.autoSizeColumn(i);}// 写入Excel文件try (FileOutputStream fileOut = new FileOutputStream("poi_demo.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();}// 关闭工作簿try {workbook.close();} catch (IOException e) {e.printStackTrace();}}
}

这个示例代码展示了如何使用Apache POI创建一个包含标题行、数据行、样式和公式的Excel文件,并将其写入文件系统中。

效果图

其他

另外,对以下内容感兴趣的同学请移步对应教程:

GPT-4o 教程

MidJourney教程

Poe教程

Fantia教程

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 区块链Hyperledger Fabric2.2 环境搭建
  • OpenCV 旋转矩形边界
  • 2.ChatGPT的发展历程:从GPT-1到GPT-4(2/10)
  • 【FFMPEG】Install FFmpeg CUDA gltransition in Ubuntu
  • linux颜色
  • hadoop的sbin
  • 2.第二阶段x86游戏实战2-认识进制、理解数据宽度和位的概念
  • 智能提醒助理系列-小程序静默登录
  • 纯CSS实现卡片欢动效果
  • vite 打包 学习
  • 自然语言处理-词向量转换
  • 数据结构:树与二叉树
  • Pygame中获取鼠标按键状态的方法
  • 【高级编程】实用类详解(补充)StringBuffer类 和 StringBuilder类
  • UE5 C++ 读取图片插件(一)
  • #Java异常处理
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【5+】跨webview多页面 触发事件(二)
  • 30天自制操作系统-2
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • bearychat的java client
  • Git学习与使用心得(1)—— 初始化
  • leetcode46 Permutation 排列组合
  • Linux快速复制或删除大量小文件
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Netty 4.1 源代码学习:线程模型
  • python大佬养成计划----difflib模块
  • React系列之 Redux 架构模式
  • Redis的resp协议
  • 对象管理器(defineProperty)学习笔记
  • 使用common-codec进行md5加密
  • 世界上最简单的无等待算法(getAndIncrement)
  • 小程序开发中的那些坑
  • 自动记录MySQL慢查询快照脚本
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​flutter 代码混淆
  • ​如何防止网络攻击?
  • ​水经微图Web1.5.0版即将上线
  • $.ajax()
  • (BFS)hdoj2377-Bus Pass
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (回溯) LeetCode 40. 组合总和II
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (南京观海微电子)——示波器使用介绍
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (四) 虚拟摄像头vivi体验
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • ***通过什么方式***网吧
  • *上位机的定义
  • ..回顾17,展望18
  • .gitattributes 文件
  • .net framework4与其client profile版本的区别