如何用Java创建和编辑Excel XLSX文档

三十多年来——实际上是科技时代的一个世纪——Excel为世界各地的企业和有志之士提供了动力。仅在美国,估计就有70多万家公司使用Excel,而在全球范围内,Excel独立用户的数量徘徊在10亿多一点,约占1/8泰国(Thailand)全球人口的。

然而,随着基于订阅的点击式企业SaaS数据解决方案的快速发展时代的到来,使用“传统”意义上的Excel的效率显然不如从前。点击Excel桌面图标,选择“新工作簿”并从空白页或模板中格式化一个独特的文档,这足以让您在当今闪电般的项目交付标准下处于领先地位。十多年来,Excel使用的平凡性和可预测性要求并得到了与许多不安分的技术社区不断迈向的干预形式相同的干预:自动化。

令人欣慰的是,标准Excel文档的自动创建和操作只需要简单的编程干预。几乎任何可以在Excel文档中手动执行的操作都可以通过访问正确的库以编程方式执行。一旦这些门被打开,定制Excel文档并在其中大规模集成数据的过程立即变得更加高效(这种方法减少了我们预期的手动数据输入和电子表格格式化中的人为输入错误的自然因素)。例如,如果我们知道月度报告电子表格只需要来自一组一致数据源的最新信息,那么如果我们能够配置这些数据源以将信息直接写入文件,而无需人工充当中间人,这将是非常理想的。

我们不必寻找现代常用Excel编辑库的例子——在计算机编程语言例如,通过各种有用的函数,本机支持编程Excel编辑。因为不是所有的编程语言(如Java 语言(一种计算机语言,尤用于创建网站)例如)像Python一样支持Excel操作,利用外部API是实现Excel自动化的一个很好的方法。特别是对于大规模处理Excel文件的应用程序来说,外部API调用可以提供Excel文件操作所需的库,并通过将该任务的处理能力卸载到单独的服务器来提高整体效率。

示范
在本文的剩余部分中,我将演示几个免费使用的API解决方案,它们都是为以编程方式安全轻松地创建和编辑Excel文件而设计的。所有这些都只需要几行补充的、随时可以运行的Java代码(下面提供)以及一个自由层API密钥来完成API调用。本文中演示的API解决方案包括以下内容:

开始编辑文档:此API启动文档上传以开始对现有Excel文档进行编辑操作,并返回一个安全编辑URL(该URL将缓存30分钟,不能用于直接访问文档)。
创建一个空白Excel XLSX电子表格:此API返回空白Excel XLSX格式文件的编码及其自己的编辑URL。
在Excel XLSX电子表格中插入新工作表:此API使用现有或以编程方式生成的XLSX文件中的临时编辑URL创建并插入新工作表。
通过单元格标识符设置和更新Excel XLSX电子表格工作表中的单元格内容:此API允许使用临时编辑URL在Excel工作表的指定单元格中放置和格式化内容。
完成编辑文档:此API通过处理临时编辑URL并为最终编辑的Excel文件提供编码来完成文档编辑。
综上所述,您可以使用通过“开始编辑文档”API调用生成的临时编辑URL,以编程方式安全地编辑现有Excel文档。要从头开始创建新的Excel文档,您可以调用“创建空白Excel XLSX电子表格”API,它还会生成自己版本的临时编辑URL。

在任一场景中生成临时编辑URL后,您可以通过每个API的输入请求参数传递URL,将新工作表插入到文档中或将信息写入特定单元格。

对于预先存在的和以编程方式生成的Excel文档,编辑过程完成后,必须在“完成编辑”阶段处理临时编辑URL,以返回更新的XLSX文件编码。这最后一步是确保文档安全所必需的;临时编辑URL不能用于直接访问文档,它只能缓存30分钟。

下面,我将提供用Java构建每个API调用的代码。然而,在开始之前,您首先需要遵循几个步骤来安装Java SDK。

用…安装专家,首先,在poml.xml中添加对存储库的引用:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

然后在pom.xml中添加对依赖项的引用:

<dependencies>
<dependency>
    <groupId>com.github.Cloudmersive</groupId>
    <artifactId>Cloudmersive.APIClient.Java</artifactId>
    <version>v4.25</version>
</dependency>
</dependencies>

或者,要安装Gradle,请将其添加到您的根build.gradle中,位于存储库的末尾:

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

然后在build.gradle中添加依赖项:

dependencies {
        implementation 'com.github.Cloudmersive:Cloudmersive.APIClient.Java:v4.25'
}

安装完成后,您可以将注意力转向构建每个单独的API调用。

1.开始编辑文档
要开始基于文件路径上传和编辑现有Excel文档的过程,首先使用以下代码示例调用“开始编辑”API。这将返回一个临时编辑URL:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
try {
    String result = apiInstance.editDocumentBeginEditing(inputFile);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentBeginEditing");
    e.printStackTrace();
}

2.创建一个空白Excel XLSX电子表格
要用一个全新的文件开始编程编辑过程,请使用以下代码。这将自动生成一个空白XLSX文件并返回一个临时URL:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
CreateBlankSpreadsheetRequest input = new CreateBlankSpreadsheetRequest(); // CreateBlankSpreadsheetRequest | Document input request
try {
    CreateBlankSpreadsheetResponse result = apiInstance.editDocumentXlsxCreateBlankSpreadsheet(input);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentXlsxCreateBlankSpreadsheet");
    e.printStackTrace();
}

3.在Excel电子表格中插入新工作表
要在Excel文档中插入新工作表,请使用下面的代码进行API调用。您需要通过InputFileUrl请求参数,并指定新工作表的路径和名称:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
InsertXlsxWorksheetRequest input = new InsertXlsxWorksheetRequest(); // InsertXlsxWorksheetRequest | Document input request
try {
    InsertXlsxWorksheetResponse result = apiInstance.editDocumentXlsxInsertWorksheet(input);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentXlsxInsertWorksheet");
    e.printStackTrace();
}

4.通过单元格标识符设置、更新Excel电子表格、工作表中的单元格内容
要在Excel文件中设置单元格内容,请使用下面的代码,并在进行API调用时再次包含原始文件的临时编辑URL。该API的请求参数包括指定工作表、单元格标识符、单元格值等选项(在下面的示例请求正文中列举)。在单元格值规范中,您可以在指定的单元格中包含文本内容、基于样式索引格式化样式和/或为该特定单元格配置公式。

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
SetXlsxCellByIdentifierRequest input = new SetXlsxCellByIdentifierRequest(); // SetXlsxCellByIdentifierRequest | Document input request
try {
    SetXlsxCellByIdentifierResponse result = apiInstance.editDocumentXlsxSetCellByIdentifier(input);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentXlsxSetCellByIdentifier");
    e.printStackTrace();
}

请参考以下示例来正确组织您的输入请求:

{
  "InputFileBytes": "string",
  "InputFileUrl": "string",
  "WorksheetToUpdate": {
    "Path": "string",
    "WorksheetName": "string"
  },
  "CellIdentifier": "string",
  "CellValue": {
    "Path": "string",
    "TextValue": "string",
    "CellIdentifier": "string",
    "StyleIndex": 0,
    "Formula": "string"
  }
}

5.完成文档编辑,下载文档编辑结果
编辑过程完成后,使用下面提供的代码调用“完成编辑”操作。对于此操作,您只需要文件的临时编辑URL,它将返回正确的XLSX文件编码:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
FinishEditingRequest reqConfig = new FinishEditingRequest(); // FinishEditingRequest | Cloudmersive Document URL to complete editing on
try {
    byte[] result = apiInstance.editDocumentFinishEditing(reqConfig);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentFinishEditing");
    e.printStackTrace();
}

完成“完成编辑”API调用后,您可以使用输出XLSX文件编码来生成新文件。

供您参考,上面提供的API解决方案只是通过Cloudmersive Convert API提供的许多文档编辑API迭代中的一小部分。您还可以使用其他API以编程方式重命名工作表、从工作表中获取特定列、清除内容、获取宏信息等等(以“开始编辑”和“完成编辑”API调用开始和结束)。

  • 40
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小徐博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值