国产化Excel处理组件Spire.XLS教程:Java 向 Excel 写入数据的3种高效方法(含代码示例)
<p>手动向 Excel 工作表中输入数据既耗时又容易出错,尤其是在处理大型数据集时。而借助合适的 Java Excel 库,可以简化数据输入这一流程。</p><p><em><strong>E</strong></em><em><strong>-iceblue</strong>旗下<strong>S</strong><strong>pire</strong><strong>系列产品</strong>,是文档处理领域的佼佼者,<strong>支持国产化信创</strong>。</em>本文将详细介绍如何使用<strong><u> </u></strong><strong><u>Spire.XLS for Java</u></strong><strong><u> </u></strong>库,通过 3 种高效方法完成 Java 向 Excel 工作表的数据写入,涵盖基础的逐个单元格录入、批量数组插入以及 DataTable 导出。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Java免费试用下载 ,请联系E-iceblue官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<h2>设置与安装</h2>
<p>开始之前,需先将<strong><u> Spire.XLS for Java </u></strong>集成到项目中,以下为两种快速部署方式:</p>
<p><strong>方式 1:手动下载 JAR 包</strong></p>
<ul>
<li>访问<strong><u> </u></strong><strong><u>Spire.XLS for Java 官方下载页面</u></strong></li>
<li>下载最新版本的 JAR 文件</li>
<li>将 JAR 文件手动导入项目中</li>
</ul>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Java免费试用下载 ,请联系E-iceblue官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p>
<p><strong>方式 2:Maven 依赖集成</strong></p>
<p>在项目 pom.xml 中添加以下仓库和依赖,Maven 会自动下载并引入库(无需手动处理依赖冲突):</p>
<pre class="prettyprint lang-java highlighter-hljs"><code><repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>15.8.3</version>
</dependency>
</dependencies></code></pre>
<h2>Java 向 Excel 中写入数据的 3 种方法</h2>
<p><strong><u>Spire.XLS for Java</u></strong> 提供了灵活的数据写入方法,可适配不同使用场景。以下将结合完整代码示例、说明及适用场景,逐一介绍每种方法。</p>
<h3>1. 在 Excel 单元格中写入文本或数字</h3>
<p>若需向单个单元格填充文本或数字,<strong><u>Spire.XLS</u></strong> 支持通过行、列索引(例如(2,1)代表第 2 行第 1 列)或 Excel 样式引用(例如"A1"、"B3")直接定位目标单元格:</p>
<p><strong>核心方法:</strong></p>
<ul>
<li>使用 Worksheet.get(int row, int column) 或 Worksheet.get(String name) 方法获取指定 Excel 单元格</li>
<li>使用 setValue() 方法向单元格写入文本值</li>
<li>使用 setNumberValue() 方法向单元格写入数值</li>
</ul>
<p><strong>Java 代码示例:</strong></p>
<pre class="prettyprint lang-java highlighter-hljs"><code>import com.spire.xls.*;
public class WriteToCells {
public static void main(String[] args) {
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 向指定单元格写入数据
worksheet.get("A1").setValue("物品名");
worksheet.get("B1").setValue("数量");
worksheet.get("C1").setValue("分类");
worksheet.get("D1").setValue("采购日期");
worksheet.get(2,1).setValue("键盘");
worksheet.get(2,2).setNumberValue(12);
worksheet.get(2,3).setValue("办公用品");
worksheet.get(2,4).setValue("2024/11/09");
worksheet.get(3,1).setValue("毛巾");
worksheet.get(3,2).setNumberValue(30);
worksheet.get(3,3).setValue("生活用品");
worksheet.get(3,4).setValue("2024/12/18");
// 为第一行应用样式
CellStyle style = workbook.getStyles().addStyle("newStyle");
style.getFont().isBold(true); // 设置字体为粗体
worksheet.getRange().get(1,1,1,4).setStyle(style);
// 保存为 Excel 文件
workbook.saveToFile("写入数据到单元格.xlsx", ExcelVersion.Version2016);
}
}</code></pre>
<p><strong>适用场景:</strong></p>
<p>适用于小型数据集,且需要精确控制单元格位置的场景(例如添加标题、单行数据录入)。</p>
<p><strong>效果预览:</strong></p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250904/093009_2.png"></p>
<h3>写入数组到 Excel 工作表</h3>
<p>将一维数组(单行)或二维数组(多行多列)一次性插入连续单元格区域,能提升逐个写入的效率。</p>
<p><strong>核心 API:insertArray() 解析</strong></p>
<p>insertArray() 方法可轻松处理一维数组(单行数据)和二维数组(多行多列数据),其参数说明如下:</p>
<ul>
<li>Object[] array/ Object[][] array:待插入的一维、二维数组</li>
<li>int firstRow:起始行索引(从 1 开始)</li>
<li>int firstColumn:起始列索引(从 1 开始)</li>
<li>boolean isVertical:一维数组插入方向
<ul>
<li>false:水平插入(从左到右)</li>
<li>true:垂直插入(从上到下)</li>
</ul>
</li>
</ul>
<p><strong>Java 代码示例:</strong></p>
<pre class="prettyprint lang-java highlighter-hljs"><code>import com.spire.xls.*;
public class WriteArrayToWorksheet {
public static void main(String[] args) {
// 创建 Workbook 实例
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 创建一维数组
Object[] oneDimensionalArray = {"一月", "二月", "三月", "四月", "五月", "六月"};
// 将一维数组写入工作表第一行
worksheet.insertArray(oneDimensionalArray, 1, 1, false);
// 创建二维数组
Object[][] twoDimensionalArray = {
{"姓名", "年龄", "性别", "部门", "电话"},
{"Bob", "25", "男", "技术部", "654214"},
{"John", "24", "男", "广告部", "624847"},
{"Kelly", "26", "女", "销售部", "624758"}
};
// 将二维数组从 A3 单元格开始写入工作表
worksheet.insertArray(twoDimensionalArray, 3, 1);
// 为第一行和第三行应用样式
CellStyle style = workbook.getStyles().addStyle("newStyle");
style.getFont().isBold(true); // 设置字体为粗体
worksheet.getRange().get(1,1,1,6).setStyle(style);
worksheet.getRange().get(3,1,3,6).setStyle(style);
// 保存为 Excel 文件
workbook.saveToFile("写入数组.xlsx", ExcelVersion.Version2016);
}
}</code></pre>
<p><strong>适用场景:</strong></p>
<p>适用于有序数据(例如库存日志、用户列表)的批量插入场景。</p>
<p><strong>效果预览:</strong></p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250904/093135_6.png"></p>
<h3>3. 写入 DataTable 数据到 Excel 工作表</h3>
<p>若数据存储在 DataTable 中(例如来自数据库的数据),Spire.XLS 可通过 <strong>insertDataTable()</strong> 方法直接将其导出到 Excel,并保留数据结构和列标题。</p>
<p><strong>核心 API:insertDataTable() 解析</strong></p>
<p>insertDataTable() 是专用于向 Excel 工作表中批量插入结构化数据集的方法,其参数说明如下:</p>
<ul>
<li>DataTable dataTable:待导出的 DataTable 对象</li>
<li>boolean columnHeaders:是否将 DataTable 的列名作为 Excel 表头</li>
<li>int firstRow:起始行索引(从 1 开始)</li>
<li>int firstColumn:起始列索引(从 1 开始)</li>
<li>boolean transTypes:是否保留数据类型</li>
</ul>
<p><strong>Java 代码示例:</strong></p>
<pre class="prettyprint lang-java highlighter-hljs"><code>import com.spire.xls.*;
import com.spire.xls.data.table.DataRow;
import com.spire.xls.data.table.DataTable;
public class WriteDataTableToWorksheet {
public static void main(String[] args) throws Exception {
// 创建 Workbook 实例
Workbook workbook = new Workbook();
// 获取第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 创建 DataTable 对象
DataTable dataTable = new DataTable();
dataTable.getColumns().add("SKU", Integer.class); // 库存单位(SKU)
dataTable.getColumns().add("产品名", String.class); // 产品名称
dataTable.getColumns().add("价格", String.class); // 价格
// 创建数据行并添加数据
DataRow dr = dataTable.newRow();
dr.setInt(0, 512900512);
dr.setString(1,"无线鼠标M200");
dr.setString(2,"¥99");
dataTable.getRows().add(dr);
dr = dataTable.newRow();
dr.setInt(0,512900637);
dr.setString(1,"B100有线鼠标");
dr.setString(2,"¥85");
dataTable.getRows().add(dr);
dr = dataTable.newRow();
dr.setInt(0,512901829);
dr.setString(1,"游戏鼠标");
dr.setString(2,"¥125");
dataTable.getRows().add(dr);
dr = dataTable.newRow();
dr.setInt(0,512900386);
dr.setString(1,"ZM光电鼠标");
dr.setString(2,"¥89");
dataTable.getRows().add(dr);
// 将DataTable写入工作表
worksheet.insertDataTable(dataTable,true,1,1,true);
// 为第一行应用样式
CellStyle style = workbook.getStyles().addStyle("newStyle");
style.getFont().isBold(true); // 设置字体为粗体
worksheet.getRange().get(1,1,1,3).setStyle(style);
// 保存为Excel文件
workbook.saveToFile("写入DataTable.xlsx", ExcelVersion.Version2016);
}
}</code></pre>
<p> </p>
<p><strong>适用场景:</strong></p>
<p>适用于导出数据库数据、客户关系管理(CRM)数据,或任何存储在 DataTable 中的结构化数据(例如 SQL 查询结果、CSV 导入数据)。</p>
<p><strong>效果预览:</strong></p>
<p><img src="https://image.evget.com/attachment/keditor/image/20250904/093247_0.png"></p>
<h2>大型数据集性能优化指南</h2>
<p>当处理超大型数据时,需通过以下手段减少内存占用、提升速度:</p>
<ul>
<li>优先使用批量操作(insertArray() 或 insertDataTable()),而非逐个单元格写入。</li>
<li>先写入所有数据,最后统一设置样式(避免频繁刷新表格布局)。</li>
<li>对于大型数据集,建议使用流模式写入以减少内存占用。</li>
</ul>
<h2>常见问题(FAQ)</h2>
<h3>Q1:Spire.XLS for Java 支持哪些 Excel 格式?</h3>
<p><strong>答</strong>:<strong><u>Spire.XLS for Java </u></strong>支持所有主流 Excel 格式,包括:</p>
<ul>
<li>旧版:XLS(Excel 97-2003)</li>
<li>新版:XLSX、XLSM(支持宏)、XLSB 等。</li>
</ul>
<p>可通过 saveToFile() 方法指定输出格式。</p>
<h2>总结</h2>
<p>对于数据驱动应用中的 Java 开发者而言,掌握 Excel 导出功能至关重要。<strong><u>Spire.XLS for Java</u></strong> 库提供了 3 种通过 Java 向 Excel 写入数据的高效方法:</p>
<ul>
<li>逐个单元格写入:实现精确控制</li>
<li>数组批量插入:实现高性能数据录入</li>
<li>DataTable 导出:实现数据库式结构化数据传输</li>
</ul>
<p>结合本文的性能优化技巧,可轻松应对从简单报表到大型数据导出的各类需求。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Java免费试用下载 ,请联系E-iceblue官方授权代理商<span style="text-decoration: underline">慧都科技</span></strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。</em></strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19073088
頁:
[1]