Skip to content

Commit f40a318

Browse files
Merge pull request #16 from aspose-cells/optimize/cells/java/20251214080710
Optimize 23 Cells Java pages
2 parents 1076b68 + ddee616 commit f40a318

23 files changed

Lines changed: 2246 additions & 1780 deletions

File tree

  • cells
    • arabic/java/advanced-features/aspose-cells-java-custom-stream-provider
    • chinese/java/advanced-features/aspose-cells-java-custom-stream-provider
    • czech/java/advanced-features/aspose-cells-java-custom-stream-provider
    • dutch/java/advanced-features/aspose-cells-java-custom-stream-provider
    • english/java/advanced-features/aspose-cells-java-custom-stream-provider
    • french/java/advanced-features/aspose-cells-java-custom-stream-provider
    • german/java/advanced-features/aspose-cells-java-custom-stream-provider
    • greek/java/advanced-features/aspose-cells-java-custom-stream-provider
    • hindi/java/advanced-features/aspose-cells-java-custom-stream-provider
    • hongkong/java/advanced-features/aspose-cells-java-custom-stream-provider
    • hungarian/java/advanced-features/aspose-cells-java-custom-stream-provider
    • indonesian/java/advanced-features/aspose-cells-java-custom-stream-provider
    • italian/java/advanced-features/aspose-cells-java-custom-stream-provider
    • japanese/java/advanced-features/aspose-cells-java-custom-stream-provider
    • korean/java/advanced-features/aspose-cells-java-custom-stream-provider
    • polish/java/advanced-features/aspose-cells-java-custom-stream-provider
    • portuguese/java/advanced-features/aspose-cells-java-custom-stream-provider
    • russian/java/advanced-features/aspose-cells-java-custom-stream-provider
    • spanish/java/advanced-features/aspose-cells-java-custom-stream-provider
    • swedish/java/advanced-features/aspose-cells-java-custom-stream-provider
    • thai/java/advanced-features/aspose-cells-java-custom-stream-provider
    • turkish/java/advanced-features/aspose-cells-java-custom-stream-provider
    • vietnamese/java/advanced-features/aspose-cells-java-custom-stream-provider

cells/arabic/java/advanced-features/aspose-cells-java-custom-stream-provider/_index.md

Lines changed: 97 additions & 78 deletions
Large diffs are not rendered by default.

cells/chinese/java/advanced-features/aspose-cells-java-custom-stream-provider/_index.md

Lines changed: 98 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
---
2-
"date": "2025-04-09"
3-
"description": "学习如何使用 Aspose.Cells 和 Java 实现自定义流提供程序。通过高效管理链接图像和外部资源来增强您的 Excel 工作簿。"
4-
"title": "掌握 Aspose.Cells Java —— 为 Excel 工作簿实现自定义流提供程序"
5-
"url": "/zh/java/advanced-features/aspose-cells-java-custom-stream-provider/"
6-
"weight": 1
2+
date: '2025-12-14'
3+
description: 学习如何通过实现自定义流提供程序,使用 Aspose.Cells for Java 将 Excel 转换为 PNG。高效管理链接的图像和外部资源。
4+
keywords:
5+
- Aspose.Cells Java custom stream provider
6+
- custom stream provider implementation in Java
7+
- Excel workbook linked images management
8+
title: 精通 Aspose.Cells Java:使用自定义流提供程序将 Excel 转换为 PNG
9+
url: /zh/java/advanced-features/aspose-cells-java-custom-stream-provider/
10+
weight: 1
711
---
812

913
{{< blocks/products/pf/main-wrap-class >}}
@@ -12,31 +16,37 @@
1216

1317
{{< blocks/products/pf/tutorial-page-section >}}
1418

19+
# 精通 Aspose.Cells Java:使用自定义流提供程序将 Excel 转换为 PNG
1520

16-
# 掌握 Aspose.Cells Java:为 Excel 工作簿实现自定义流提供程序
21+
在当今的数字环境中,高效地 **convert Excel to PNG** 并管理外部资源对开发者和企业至关重要。本教程将指导您使用 Aspose.Cells for Java 实现自定义流提供程序,从而能够无缝集成并 **read image stream java** 资源到 Excel 工作簿中,并导出高质量的 PNG 文件。
1722

18-
在当今的数字环境中,高效管理外部资源对于开发人员和企业至关重要。本教程重点介绍如何使用 Aspose.Cells 和 Java 实现自定义流提供程序,从而将外部资源无缝集成到您的 Excel 工作簿中。
19-
20-
**您将学到什么:**
23+
**您将学习:**
2124
- 如何设置和使用 Aspose.Cells for Java
22-
- 使用 Java 实现自定义流提供程序
23-
- 配置 Excel 工作簿以处理链接图像
24-
- 此功能的实际应用
25+
- 在 Java 中实现自定义流提供程序
26+
- 配置 Excel 工作簿以处理链接的图像
27+
- 将 Excel 转换为 PNG 带来价值的真实场景
28+
29+
## 快速答复
30+
- **自定义流提供程序的作用是什么?** 它让您能够控制在工作簿处理期间外部资源(如图像)的加载和保存方式。
31+
- **为什么要将 Excel 转换为 PNG?** PNG 输出提供轻量级、适合网页的工作表图像,非常适合报告仪表板。
32+
- **需要哪个版本的 Aspose?** Aspose.Cells 25.3 或更高版本。
33+
- **我可以在 Java 中读取图像流吗?** 可以——您的 `IStreamProvider` 实现可以将图像文件读取为流(见代码)。
34+
- **生产环境是否需要许可证?** 需要完整许可证;可使用免费试用版进行评估。
2535

26-
## 先决条件
36+
## 前置条件
2737

28-
要继续本教程,请确保您已具备:
29-
- **Aspose.Cells for Java**:版本 25.3 或更高版本。
30-
- 对 Java 编程和使用库有基本的了解。
31-
- 为 Java 开发设置的 IDE(如 IntelliJ IDEA 或 Eclipse)。
38+
要跟随本教程,请确保您具备:
3239

33-
此外,请确保您的环境已准备好集成 Maven 或 Gradle 依赖项。
40+
- **Aspose.Cells for Java**:版本 25.3 或更高。
41+
- 对 Java 编程及库使用有基本了解。
42+
- 已配置用于 Java 开发的 IDE(如 IntelliJ IDEA 或 Eclipse)。
43+
- 已准备好使用 Maven 或 Gradle 管理依赖。
3444

3545
## 设置 Aspose.Cells for Java
3646

37-
要在Java项目中使用Aspose.Cells,您可以通过Maven或Gradle进行安装。以下是每种方法的配置
47+
要在 Java 项目中使用 Aspose.Cells,请通过 Maven 或 Gradle 安装。以下是各自的配置
3848

39-
**Maven**
49+
**Maven:**
4050

4151
```xml
4252
<dependency>
@@ -46,31 +56,31 @@
4656
</dependency>
4757
```
4858

49-
**Gradle**
59+
**Gradle:**
5060

5161
```gradle
5262
implementation('com.aspose:aspose-cells:25.3')
5363
```
5464

5565
### 许可证获取
5666

57-
Aspose.Cells 提供免费试用、临时评估许可证以及完整购买选项:
58-
- **免费试用**:从下载库 [发布](https://releases。aspose.com/cells/java/).
59-
- **临时执照**:通过以下方式获取 [临时执照页面](https://purchase.aspose.com/temporary-license/) 不受限制地进行评估。
60-
- **购买**:如需完整访问,请访问 [Aspose购买页面](https://purchase。aspose.com/buy).
67+
Aspose.Cells 提供免费试用、用于评估的临时许可证以及完整购买选项:
68+
69+
- **免费试用**:从 [releases](https://releases.aspose.com/cells/java/) 下载库。
70+
- **临时许可证**:通过 [temporary license page](https://purchase.aspose.com/temporary-license/) 获取,以无限制方式评估。
71+
- **购买**:获取完整访问权限,请访问 [Aspose purchase page](https://purchase.aspose.com/buy)
6172

62-
一旦设置完毕,我们就可以继续实现自定义流提供程序
73+
一旦完成设置,让我们继续实现自定义流提供程序
6374

64-
## 实施指南
75+
## 实现指南
6576

66-
### 实现自定义流提供程序
77+
### 什么是自定义流提供程序?
6778

68-
**概述:**
69-
自定义流提供程序允许您管理 Excel 工作簿中的外部资源,例如图像。本节演示如何使用 Aspose.Cells for Java 实现自定义流提供程序。
79+
自定义流提供程序让您对外部资源(如链接的图像)的读取和写入拥有完全控制。通过实现 `IStreamProvider`,您可以 **read image stream java** 对象直接从磁盘、数据库或其他来源读取,然后在转换过程中将其提供给 Aspose.Cells。
7080

71-
#### 步骤 1:定义 StreamProvider 类
81+
### 步骤 1:定义 StreamProvider 类
7282

73-
首先,创建一个实现 `IStreamProvider`。此接口需要实现方法来初始化和关闭流
83+
首先,创建一个实现 `IStreamProvider` 的类。该接口要求实现初始化和关闭流的方法
7484

7585
```java
7686
import java.io.File;
@@ -82,35 +92,35 @@ import com.aspose.cells.StreamProviderOptions;
8292
class SP implements IStreamProvider {
8393
private String dataDir = "YOUR_DATA_DIRECTORY";
8494

85-
// 初始化给定资源的流。
95+
// Initializes the stream for a given resource.
8696
public void initStream(StreamProviderOptions options) throws Exception {
8797
File imgFile = new File(dataDir + "/sampleControlExternalResourcesUsingWorkbookSetting_StreamProvider.png");
8898
byte[] bts = new byte[(int) imgFile.length()];
8999

90-
// 将图像文件读入字节数组。
100+
// Read the image file into a byte array.
91101
try (FileInputStream fin = new FileInputStream(imgFile)) {
92102
fin.read(bts);
93103
}
94104

95-
// 将字节数组转换为输出流并在选项中设置它。
105+
// Convert the byte array to an output stream and set it in options.
96106
ByteArrayOutputStream baout = new ByteArrayOutputStream();
97107
baout.write(bts);
98108
options.setStream(baout);
99109
}
100110

101-
// 如果有必要,关闭流的方法(这里没有使用)。
111+
// Method to close the stream if necessary (not utilized here).
102112
public void closeStream(StreamProviderOptions arg0) throws Exception {
103113
}
104114
}
105115
```
106116

107-
**解释**
108-
- `initStream`:将图像文件读入字节数组并将其设置 `options`
109-
- `closeStream`:供将来使用的占位符,目前不需要
117+
**说明**
118+
- `initStream` 将图像文件读取为字节数组,然后包装在 `ByteArrayOutputStream` 中。这就是您 **read image stream java** 并将其交给 Aspose.Cells 的方式。
119+
- `closeStream` 目前是未来清理逻辑的占位符
110120

111-
#### 步骤 2:配置工作簿设置
121+
### 步骤 2:配置工作簿设置
112122

113-
接下来,通过适当设置资源来配置工作簿以利用您的自定义流提供程序:
123+
接下来,配置工作簿以使用自定义流提供程序。此步骤还演示了在资源加载后如何 **convert Excel to PNG**
114124

115125
```java
116126
import com.aspose.cells.*;
@@ -119,11 +129,11 @@ public class ControlExternalResourcesUsingWorkbookSetting {
119129
private String dataDir = "YOUR_DATA_DIRECTORY";
120130
private String outDir = "YOUR_OUTPUT_DIRECTORY";
121131

122-
// 运行从工作簿配置和保存图像的主要过程。
132+
// Runs the main process of configuring and saving an image from a workbook.
123133
public void Run() throws Exception {
124134
Workbook wb = new Workbook(dataDir + "/sampleControlExternalResourcesUsingWorkbookSetting_StreamProvider.xlsx");
125135

126-
// 设置用于处理链接图像的自定义资源提供程序。
136+
// Set the custom resource provider for handling linked images.
127137
wb.getSettings().setResourceProvider(new SP());
128138

129139
Worksheet ws = wb.getWorksheets().get(0);
@@ -138,58 +148,69 @@ public class ControlExternalResourcesUsingWorkbookSetting {
138148
}
139149
```
140150

141-
**解释**
142-
- 加载包含外部资源的 Excel 文件。
143-
- 在工作簿设置中设置用于处理链接图像的自定义流提供程序。
144-
- 配置图像选项并将工作表呈现为图像
151+
**说明**
152+
- 工作簿加载包含链接图像的 Excel 文件。
153+
- `setResourceProvider(new SP())` 告诉 Aspose.Cells 使用我们定义的自定义提供程序。
154+
- `ImageOrPrintOptions` 被配置为输出 PNG,完成 **convert Excel to PNG** 工作流
145155

146156
### 实际应用
147157

148-
实现自定义流提供程序在以下几种情况下可能会有所帮助:
149-
1. **自动报告**:简化链接图像频繁更新的动态报告中的资源管理。
150-
2. **数据可视化工具**:将实时数据可视化工具与 Excel 集成,利用外部资源增强视觉效果。
151-
3. **合作项目**:促进团队之间更轻松地共享资源密集型文档,而不会增加文件大小。
158+
实现自定义流提供程序在以下场景中非常有价值:
159+
160+
1. **自动化报告** – 动态更新 Excel 报告中的图表或徽标,并即时导出为 PNG 用于网页仪表板。
161+
2. **数据可视化工具** – 从 CDN 或数据库拉取图像,注入 Excel,并渲染高分辨率 PNG 用于演示。
162+
3. **协作项目** – 通过外部存储图像保持工作簿体积小,然后按需渲染而不膨胀文件。
152163

153164
## 性能考虑
154165

155-
处理大型数据集或大量资源时:
156-
- 通过有效管理流来优化内存使用情况。
157-
- 确保正确处理和关闭流以防止内存泄漏。
158-
- 利用 Aspose.Cells 的内置功能来增强性能,例如图像渲染选项。
166+
处理大数据集或大量资源时:
159167

160-
## 结论
168+
- 尽可能复用流以优化内存使用。
169+
- 如果打开了需要显式释放的资源,请始终在 `closeStream` 中关闭流。
170+
- 使用 Aspose.Cells 内置的渲染选项(例如设置 DPI)在质量和速度之间取得平衡。
161171

162-
使用 Java 在 Aspose.Cells 中实现自定义流提供程序可以显著增强您的 Excel 资源管理能力。通过本指南,您学习了如何配置工作簿以无缝处理外部资源。
172+
## 常见问题与故障排除
163173

164-
**后续步骤:**
165-
- 尝试图像以外的不同类型的资源。
166-
- 探索将这些技术集成到更大的项目或系统中。
174+
| 问题 | 原因 | 解决方案 |
175+
|-------|-------|----------|
176+
| **图像未显示** | `dataDir` 路径不正确或文件缺失 | 确认图像文件存在且路径正确。 |
177+
| **OutOfMemoryError** | 一次性加载大量图像 | 逐个处理图像或增大 JVM 堆内存。 |
178+
| **PNG 输出为空** | `ImageOrPrintOptions` 未设置为 PNG | 确保调用 `opts.setImageType(ImageType.PNG)`|
167179

168-
如果您还有其他问题或需要帮助,请探索 [Aspose 支持论坛](https://forum.aspose.com/c/cells/9) 寻求指导和社区见解。
180+
## 常见问答
169181

170-
## 常见问题解答部分
182+
**Q1: 我可以将 Aspose.Cells 与其他 Java 框架一起使用吗?**
183+
A: 可以,Aspose.Cells 可与 Spring Boot、Jakarta EE 以及其他 Java 生态系统配合使用。只需添加 Maven/Gradle 依赖即可。
171184

172-
**问题1:我可以将 Aspose.Cells 与其他 Java 框架一起使用吗**
173-
是的,Aspose.Cells 与各种 Java 框架兼容,例如 Spring Boot。请确保您的项目依赖项配置正确
185+
**Q2: 我该如何处理 `initStream` 中的错误**
186+
A: 将文件读取代码放在 try‑catch 块中,记录或重新抛出有意义的异常,以便调用方能够适当响应
174187

175-
**Q2:如何处理流初始化中的错误**
176-
在内部实施适当的异常处理 `initStream` 优雅地管理文件读取错误或资源不可用
188+
**Q3: 链接资源的数量是否有限制**
189+
A: Aspose.Cells 能处理大量资源,但极端数量可能影响性能。请监控内存使用并考虑批处理
177190

178-
**Q3:Aspose.Cells 可以处理的资源数量有限制吗**
179-
Aspose.Cells 虽然功能强大,但性能可能会因资源数量过多而发生变化。请监控应用程序的内存使用情况,并根据需要进行优化
191+
**Q4: 这种方法可以用于非图像资源吗**
192+
A: 完全可以。您可以通过调整 MIME 类型和处理逻辑,将 `SP` 改造为流式传输 PDF、XML 或任何二进制数据
180193

181-
**Q4:我可以将此设置用于非图像资源吗**
182-
是的,您可以通过修改流提供程序实现来扩展此方法来管理其他类型的外部资源
194+
**Q5: 在哪里可以找到更高级的 Aspose.Cells 功能**
195+
A: 请在官方文档中探索数据验证、图表、数据透视表等主题,地址为 [Aspose Documentation](https://reference.aspose.com/cells/java/)
183196

184-
**Q5:Aspose.Cells 有哪些高级功能?**
185-
探索数据验证、图表和数据透视表等功能 [Aspose 的文档](https://reference。aspose.com/cells/java/).
197+
## 结论
198+
199+
通过实现自定义流提供程序,您可以细粒度地控制外部资源,并在 Java 应用中高效 **convert Excel to PNG**。尝试不同的资源类型,将提供程序集成到更大的工作流中,利用 Aspose.Cells 强大的渲染引擎交付精美的视觉资产。
200+
201+
如需进一步帮助,请访问 [Aspose support forum](https://forum.aspose.com/c/cells/9) 获取社区帮助和专家指导。
186202

187-
## 资源
188-
- **文档**:详细指南和参考资料 [Aspose 文档](https://reference.aspose.com/cells/java/)
189-
- **下载库**:从获取最新版本 [发布页面](https://releases.aspose.com/cells/java/)
190-
- **购买许可证**:获取您的许可证 [Aspose 购买页面](https://purchase.aspose.com/buy)
191-
- **免费试用**:开始免费试用评估
203+
**资源**
204+
- **文档**:详细指南和参考请见 [Aspose Documentation](https://reference.aspose.com/cells/java/)
205+
- **下载库**:从 [Releases Page](https://releases.aspose.com/cells/java/) 获取最新版本
206+
- **购买许可证**:在 [Aspose Purchase Page](https://purchase.aspose.com/buy) 获取许可证
207+
- **免费试用**:使用免费试用版开始评估
208+
209+
---
192210

211+
**最后更新:** 2025-12-14
212+
**已测试版本:** Aspose.Cells 25.3 (Java)
213+
**作者:** Aspose
193214

194215
{{< /blocks/products/pf/tutorial-page-section >}}
195216

0 commit comments

Comments
 (0)