[]
        
(Showing Draft Content)

初级-初窥门径

前言

本章节中,你将了解 GcExcel 最基础,最常用的功能。通过学习这些功能,您可以尝试完成典型场景中的基础需求。

  • 数据导入

  • 数据填写

  • 文件生成

  • 公式计算

初级计划

Excel 文件的打开和保存

Excel 又被叫做电子表格,Excel 项目包含一个工作簿,每个工作簿中包含若干个工作表。

通常在Excel桌面应用程序中,大多数情况下,直接操作和使用的都是工作表,如下图所示:

image

在GcExcel中,也同时沿用这样的概念,下面的示例代码,就是如何在GcExcel中打开和保存文件。

// 打开 Excel 文件
Workbook wb = new Workbook();
wb.open("文件1.xlsx");

// 保存至 Excel 文件
wb.save("文件2.xlsx");

以上即是 GcExcel 打开和保存的例子。除此之外支持传入特定的参数,如是否仅读取工作表中的数据等。

type=warning

您可以参考学习打开和保存工作簿,获取更多信息。

GcExcel 中的行列及区域

在 Excel 中,工作表本身是一个二维矩阵,由若干行和若干列组成,行使用整数来表示索引,列使用字母表示索引。

而区域(Range)则是用来在工作表中指定特定位置的单元格,可以是单一的单元格如:A1,也可以是一片区域的单元格如:A1:C5。

在 GcExcel 中,区域则是极为常用的,您需要通过对单元格的操作来取值设置,设置样式,添加表格,添加形状等等。

  • 下面是一个简单的例子,通过 GcExcel 获取/设置单元格的值,您可以参考了解到在 GcExcel 如何使用区域。

    //打开 File1.xlsx
    Workbook wb = new Workbook();
    wb.open("File1.xlsx")
    
    //获取第一个工作表
    IWorksheet sheet = wb.getWorksheets().get(0);
    
    //获取单元格 A1, B1, C1 的值
    object value1 = sheet.getRange("A1").getValue();
    object value2 = sheet.getRange("B1").getValue();
    object value3 = sheet.getRange("C1").getValue();
    
    //设置单元格 A1, B1, C1 的值
    sheet.getRange("A1").setValue(1);
    sheet.getRange("B1").setValue(2);
    sheet.getRange("C1").setValue(3);
  • 通过区域合并单元格

    IWorksheet sheet = wb.getWorksheets().get(0);
    //把 A1:C4 的单元格合并
    sheet.getRange("A1:C4").merge();
  • 插入行和列

    // 插入行
    worksheet.getRange("A3:A5").getEntireRow().insert();
    
    // 插入列
    worksheet.getRange("A3:A5").getEntireColumn().insert();

    以上是通过区域操作单元格的一些简单操作,你还可以从区域操作,了解到更多在 GcExcel 中关于区域的各种功能。

公式计算

GcExcel 基于自研的公式引擎,能够支持 480 多种 Excel 公式。通过创建和使用公式,可以方便用户制作财务报表,进行数据分析。

为了执行复杂的计算,GcExcel 遵循从左向右计算,并遵守特定计算优先级,您可以从公式页面了解到公式计算的优先级。

下面是公式的基础示例:

public void GetFormulaValue() {
    Workbook wb = new Workbook();
    IWorksheet sheet = wb.getWorksheets().get(0);
    sheet.getRange("A1").setValue(1);
    sheet.getRange("B1").setValue(2);
    sheet.getRange("C1").setFormula("=SUM(A1,B1)");

    System.out.print("C1 的结果是:" + sheet.getRange("C1").getValue());
}

type=warning

参考公式方法页面,了解 GcExcel 支持的 Excel 公式列表。

设置样式

样式是 Excel 中最基础的功能之一,通过修改字体,设置边框,背景颜色。呈现出,好看专业的电子表格或者电子报表是 Excel 中最常见的需求。

下面将通过三个示例展示 GcExcel 中是如何修改 Excel 样式的。

  • 填充背景颜色

    GcExcel 支持多种填充方式,如实体填充,图案填充,渐变填充,下面是实体填充的示例代码:

    //设置 B5 的填充模式为实体填充
    sheet.getRange("B5").getInterior().setPattern(Pattern.Solid);
    //设置颜色为紫色
    sheet.getRange("B5").getInterior().setColor(Color.FromArgb(255, 0, 255));

    使用上面的代码,效果如下:

    image


  • 设置边框

    GcExcel 支持多种边框类型,下面是 DashDot 的边框示例代码:

    //设置A1:B5区域的边框线型为 DashDot。
    sheet.getRange("A1:B5").getBorders().setLineStyle(BorderLineStyle.DashDot);
    //设置边框颜色为主题色 Accent1
    sheet.getRange("A1:B5").getBorders().setThemeColor(ThemeColor.Accent1);
    //给 A1:B5 区域设置双线右边框,并使用 Accent2 主题色
    sheet.getRange("A1:B5").getBorders().get(BordersIndex.EdgeRight).setLineStyle(BorderLineStyle.Double);
    sheet.getRange("A1:B5").getBorders().get(BordersIndex.EdgeRight).setThemeColor(ThemeColor.Accent2);
    //给 A1:B5 区域设置双线斜线(从左上角到右下角),并使用 Accent5 主题色
    sheet.getRange("A1:B5").getBorders().get(BordersIndex.DiagonalDown).setLineStyle(BorderLineStyle.Double);
    sheet.getRange("A1:B5").getBorders().get(BordersIndex.DiagonalDown).setThemeColor(ThemeColor.Accent5);

    使用上面的代码,效果如下:

    image


  • 设置字体

    // Set fontsheet.getRange("A1").setValue("aaa");
    sheet.getRange("A1").getFont().setThemeColor(ThemeColor.Accent1);
    sheet.getRange("A1").getFont().setTintAndShade(-0.5);
    sheet.getRange("A1").getFont().setThemeFont(ThemeFont.Major);
    sheet.getRange("A1").getFont().setBold(true);
    sheet.getRange("A1").getFont().setSize(20);
    sheet.getRange("A1").getFont().setStrikethrough(true);

    使用上面的代码,效果如下:

    image

type=warning

参考设置工作表样式,以及更多示例,了解更多关于 GcExcel 样式的使用方法。

文件导出

在本文开始,您已经学习到使用 GcExcel 打开和保存 Excel 文件。除此之外,GcExcel 也支持导入导出 CSV 文件,或者导出 PDF 文件。

CSV 文件通常会被作为保存数据来使用,可以用于在不同的系统间传递数据或者备份当前系统的数据。而 PDF 因为其不能修改,以及跨平台显示结果一致的特点,经常用于报表及打印的场景。

  • 导出 CSV

    当您在完成工作薄,工作表等一系列操作后,只需要使用 workbook.save() 方法即可把工作薄保存为 CSV 文件。

    GcExcel 支持直接传入文件路径,并且根据文件的后缀来决定导出文件的类型。

    Workbook workbook = new Workbook();
    workbook.open("existFile.xlsx");
    //...
    //执行一些业务逻辑
    //...
    workbook.save("SaveWorkbookToCsvFile.csv");
  • 导出PDF

    与导出 CSV 相似,使用workbook.save() 方法即可把工作薄保存为 PDF 文件。

    Workbook workbook = new Workbook();
    workbook.open("existFile.xlsx");
    //...
    //执行一些业务逻辑
    //...
    workbook.save("SaveWorkbookToPdfFile.pdf");

type=warning

想了解更多关于导出CSV 和 PDF 的信息,可以参考导入和导出 CSV 文件导出 PDF

此外,GcExcel 还支持其他更多的文件操作方法,可以参考文件操作