根据提供的信息,我们可以详细解析与理解 `.NET 导出 Excel` 这一主题下的关键知识点。下面将对标题、描述及部分代码进行深入分析,并补充相关的背景知识。 ### .NET 导出 Excel #### 1. 简介 .NET 框架中的 Excel 导出功能通常涉及到数据的格式化、布局以及最终文件的生成。在这个场景中,我们关注的是如何使用 C#(作为 .NET 的一种主要语言)来实现从内存中的数据到 Excel 文件的转换过程。 #### 2. 方法定义 ```csharp public bool buildExcel(crm.calculution.web.form.ProductForm form, OutputStream out); ``` 这段代码定义了一个名为 `buildExcel` 的公共方法,该方法接收两个参数:`ProductForm` 类型的对象 `form` 和 `OutputStream` 类型的对象 `out`。此方法返回一个布尔值,表示是否成功生成 Excel 文件。 #### 3. 方法实现 在方法实现中,首先声明了一个布尔变量 `con` 并初始化为 `false`,用于标识 Excel 文件是否成功生成。接下来,通过 `form.getInfo()` 获取数据列表,并根据不同情况构建 Excel 文件的内容。 - **初始化表格结构**: - 创建了两个 `ArrayList` 对象,分别用于存储行和列的数据。 - 根据 `form.getStyle()` 的不同值(0 或 1),分别处理数据结构。 - **填充数据**: - 根据 `form.getStyle()` 的值,循环遍历 `list`,填充每行数据。 - 使用 `ExcelUtil.outImageExcel` 方法将构造好的数据写入到 Excel 文件中。 - **异常处理**: - 通过 `try-catch` 结构捕获并处理可能出现的异常,确保程序的健壮性。 #### 4. ExcelUtil 类 ```csharp public class ExcelUtil { public static void outDefaultExcel(List<List> data, OutputStream out) throws Exception { HSSFWorkbook work = new HSSFWorkbook(); HSSFSheet sheet = work.createSheet("Sheet1"); createSheet(sheet, data); work.write(out); } // 假设这里还有其他辅助方法如 createSheet 等 } ``` - **创建工作簿**: - 使用 `HSSFWorkbook` 类创建一个新的工作簿对象。 - **创建工作表**: - 通过 `createSheet` 方法创建一个名为 "Sheet1" 的工作表。 - **填充数据**: - 调用 `createSheet` 方法(假设存在)来填充数据。 - **写出数据**: - 使用 `write` 方法将数据写出到指定的输出流中。 #### 5. 相关知识点扩展 - **POI 库简介**: - Apache POI 是一个 Java API,可以用来读写 Microsoft Office 格式文件,包括 Excel。 - 在这个例子中,使用了 POI 的 HSSF (HSSF 表示对 `.xls` 文件的支持) 组件来创建和操作 Excel 文件。 - **Java AWT**: - Java AWT(Abstract Window Toolkit)是 Java 提供的一套用于图形用户界面设计的类库。 - 在这里,使用了 `BufferedImage` 和 `ImageIO` 来处理图片数据。 - **数据类型和转换**: - 本例中使用了多种数据类型,如 `List`, `ArrayList`, `ByteArrayOutputStream`, `OutputStream` 等。 - 这些类型的选择是为了更好地处理数据和输出流。 - **异常处理**: - 使用 `try-catch` 语句块来捕获并处理可能发生的异常。 - 这种做法可以提高程序的稳定性和用户体验。 ### 总结 通过对上述代码的分析,我们可以看到 `.NET 导出 Excel` 的基本流程和关键步骤。从数据的准备到 Excel 文件的生成,每一步都至关重要。此外,了解使用的库(如 POI)以及 Java 的基础组件(如 AWT)对于掌握整个流程也非常重要。
接口
public boolean buildExcel(crm.calculution.web.form.ProductForm form, OutputStream out);
方法
public boolean buildExcel(crm.calculution.web.form.ProductForm form, OutputStream out) {
boolean con = false;
List<ProductCalInfo> list = form.getInfo();
try {
List rows = new ArrayList();
List cells = new ArrayList();
cells.add("");
cells.add("");
switch (form.getStyle()) {
case 0:
cells.add(form.getModeStr());
cells.add("");
rows.add(cells);
for (int i = 0; i < list.size(); i++) {
cells = new ArrayList();
ProductCalInfo info = list.get(i);
cells.add(info.getId());
cells.add(info.getType());
cells.add(info.getValue());
cells.add(info.getPercent());
}
break;
case 1:
for (int i = 0; i < form.getModes().length; i++) {
cells.add(form.getModes()[i]);
}
rows.add(cells);
for (int i = 0; i < list.size(); i++) {
cells = new ArrayList();
ProductCalInfo info = list.get(i);
cells.add(info.getId());
cells.add(info.getType());
for (int j = 0; j < info.getValue().size(); j++) {
cells.add(info.getValue().get(j));
}
rows.add(cells);
}
break;
}
ExcelUtil.outImageExcel(rows, this.getCalImage(form), out);
con = true;
} catch (Exception e) { }
return con;
}
剩余5页未读,继续阅读
- ProgrammerAntClan2013-09-10好像用不上,我后来百度了一个最土的方法
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助