[]
本章节中,你将了解 GcExcel 最基础,最常用的功能。通过学习这些功能,您可以尝试完成典型场景中的基础需求。
数据导入
数据填写
文件生成
公式计算
Excel 又被叫做电子表格,Excel 项目包含一个工作簿,每个工作簿中包含若干个工作表。
通常在Excel桌面应用程序中,大多数情况下,直接操作和使用的都是工作表,如下图所示:
在GcExcel中,也同时沿用这样的概念,下面的示例代码,就是如何在GcExcel中打开和保存文件。
// 打开 Excel 文件
Workbook wb = new Workbook();
wb.open("文件1.xlsx");
// 保存至 Excel 文件
wb.save("文件2.xlsx");
以上即是 GcExcel 打开和保存的例子。除此之外支持传入特定的参数,如是否仅读取工作表中的数据等。
type=warning
您可以参考学习打开和保存工作簿,获取更多信息。
在 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));
使用上面的代码,效果如下:
设置边框
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);
使用上面的代码,效果如下:
设置字体
// 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);
使用上面的代码,效果如下:
type=warning
在本文开始,您已经学习到使用 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 还支持其他更多的文件操作方法,可以参考文件操作。