[]
本文演示了如何在 GcExcel Java 中配置和管理 Excel 中的工作表视图,包括预定义视图、自定义工作表视图选项、调整缩放级别、冻结窗格和拆分窗格。这些功能允许您管理工作表的可见区域和布局,以增强数据的可读性。
与 MS Excel 类似,GcExcel Java 提供了预定义视图,方便用户在打印文档前预览页面布局和分页符。
普通视图 - 工作表的默认视图。
页面布局视图 - 显示工作表打印后的效果,包括页面边界、页眉和页脚。
分页预览视图 - 显示打印时的分页符位置。
您可以使用 IWorksheetView 接口的 setViewType 方法设置预设的工作表视图。
参考以下示例代码将视图设置为分页预览。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getActiveSheet();
worksheet.getRange("J12").setValue(1);
// 将工作表的视图模式设置为分页预览
worksheet.getSheetView().setViewType(ViewType.PageBreakPreview);
// 将分页预览的缩放比例修改为 80%
worksheet.getSheetView().setZoom(80);
// 保存为 Excel 文件
workbook.save("PageBreak.xlsx");输出结果如下图所示:

用户可以自定义工作表的显示方式,包括网格线可见性、行列标题、公式显示、方向、网格线颜色和空白区域可见性等选项。
您可以通过设置 IWorksheet 接口的 getSheetView 方法,或使用 IWorksheetView 接口的方法来配置工作表视图。下表列出了 IWorksheetView 接口的一些方法。
方法 | 描述 |
|---|---|
用于设置网格线颜色。 | |
用于设置工作表中最左侧的列号。 | |
用于设置显示在工作表顶部的行号。 | |
用于设置指定工作表是否从右到左显示,而非从左到右。 | |
用于设置工作表是否显示公式。 | |
用于设置是否显示网格线。 | |
用于设置是否显示垂直网格线。 | |
用于设置是否显示水平网格线。 | |
用于设置是否显示标题。 | |
用于设置是否显示大纲符号。 | |
用于设置指定工作表是否显示标尺。 | |
用于设置是否显示空白区域。 | |
用于设置是否显示零值。 |
如果设置了 setDisplayGridlines 的值,setDisplayVerticalGridlines 和 setDisplayHorizontalGridlines 将自动被设置为相同的值。
垂直和水平网格线仅在与 SpreadJS 交互时可见,在 Excel 或 PDF 中不可见。
参考以下示例代码设置表格仅显示垂直网格线。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getRange("A1:I88").setValue(10);
// 设置不显示水平网格线
worksheet.getSheetView().setDisplayHorizontalGridlines(false);
// 设置显示垂直网格线
worksheet.getSheetView().setDisplayVerticalGridlines(true);
// 保存为 SJS 文件
workbook.save("gridlines.Sjs");缩放用于调整工作表内容在屏幕上的显示大小。用户可以设置缩放级别来放大或缩小视图,以便更轻松地查看细节或浏览大量数据的概览。
您可以通过设置 IWorksheetView 接口的 setZoom 方法来获取或指定工作表的显示比例(以百分比表示)。例如,值为 100 表示默认大小,200 表示放大到两倍显示大小,依此类推。
参考以下示例代码将缩放级别设置为 80%。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 将缩放级别设置为 80%
worksheet.getSheetView().setZoom(80);
// 保存为 Excel 文件
workbook.save("zoom.xlsx");输出结果如下图所示:

您可以使用 IWorksheetView 接口的 setFitSelection 方法自动调整缩放级别,使所选区域在当前窗口中完全可见,从而最大程度地显示所选内容。
setFitSelection 方法仅支持图表工作表。如果在常规工作表上使用此方法,将抛出
NotSupportedException。SpreadJS 不支持图表工作表。如果一个文件设置了 setFitSelection 方法并导出为 SJS 或 SSJSON 格式,setFitSelection 设置将不会被保留。
参考以下示例代码设置缩放级别以适应所选范围。
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 准备数据
worksheet.setName("Data");
worksheet.getRange("A1:C13").setValue(new Object[][] {
{null, "Blue Series", "Orange Series"},
{"Jan", 0, 59.1883603948205},
{"Feb", 44.6420211591501, 52.2280901938606},
{"Mar", 45.2174930051225, 49.8093056416248},
{"Apr", 62, 37.3065749226828},
{"May", 53, 34.4312192530766},
{"Jun", 31.8933622049831, 69.7834561753736},
{"Jul", 41.7930895085093, 63.9418103906982},
{"Aug", 73, 57.4049534494926},
{"Sep", 49.8773891668518, 33},
{"Oct", 50, 74},
{"Nov", 54.7658428630216, 22.9587876597096},
{"Dec", 32, 54},
});
// 创建图表工作表并添加面积图
IWorksheet chartSheet = workbook.getWorksheets().add(SheetType.Chart);
chartSheet.setName("Chart");
IShape shape = chartSheet.getShapes().addChart(ChartType.Area, 0, 0, 360, 230);
shape.getChart().getSeriesCollection().add(worksheet.getRange("A1:C13"), RowCol.Columns);
shape.getChart().getChartTitle().setText("Area Chart");
// 设置图表工作表适应所选内容
chartSheet.getSheetView().setFitSelection(true);
// 保存为 Excel 文件
workbook.save("FitSelection.xlsx");输出结果如下图所示:

窗格功能使您可以将工作表划分为多个独立的查看区域。通过使用冻结窗格或拆分窗格,您可以同时查看工作表的不同部分而无需频繁滚动,显著提高数据查看的便利性和效率。
您可以使用 IWorksheet 接口的方法来冻结、取消冻结、拆分或取消拆分窗格。下表列出了 IWorksheet 接口的一些方法。
方法 | 描述 |
|---|---|
用于获取当前冻结窗格的起始行位置。 | |
用于获取当前冻结窗格的起始列位置。 | |
用于获取在工作表底部指定要冻结的行,以便在滚动时保持可见。 | |
用于获取在工作表右侧指定要冻结的列,以便在滚动时保持可见。 | |
用于获取工作表被拆分为多个窗格的行索引。 | |
用于获取工作表被拆分为多个窗格的列索引。 | |
用于获取或设置冻结窗格线的自定义颜色。 | |
用于通过指定行和列索引来冻结工作表中的窗格,以设置冻结的行和列。 | |
用于通过指定行和列索引来冻结工作表底部和右侧的窗格。 | |
用于取消当前工作表中所有冻结的窗格。 | |
用于取消当前工作表底部和右侧所有冻结的窗格。 | |
用于在工作表中锁定行和列,将其分为多个可独立滚动的区域。通过提供单元格索引作为参数来指定拆分位置。 | |
用于取消拆分的窗格。使用此方法类似于使用 IWorksheet.SplitPanes(0,0)。 |
GcExcel Java 支持在工作表中冻结窗格,允许用户在滚动其余内容时保持特定的行或列可见。
您还可以为冻结窗格线设置自定义颜色。自定义颜色仅在与 SpreadJS 交互时可见,在导出的 Excel 或 PDF 文件中不可见。
参考以下示例代码在工作表中冻结窗格。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 冻结窗格
worksheet.freezePanes(2, 3);
// 保存为 Excel 文件
workbook.save("FreezePanes.xlsx");输出结果如下图所示:

参考以下示例代码在工作表中将冻结窗格线颜色设置为蓝色。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 冻结窗格
worksheet.freezePanes(5, 5);
// 将冻结线颜色设置为蓝色
worksheet.setFrozenLineColor(Color.GetBlue());
// 保存为 SJS 文件
workbook.save("frozenlinecolor.Sjs");参考以下示例代码取消工作表中冻结的窗格。
// 取消冻结窗格
worksheet.unfreezePanes();GcExcel Java 支持冻结尾部窗格,允许工作表的底部行和最右侧列在滚动时保持可见,便于数据的查看和比较。
冻结的尾部窗格仅在与 SpreadJS 格式交互时可见,在导出的 Excel 或 PDF 文件中不可用。
参考以下示例代码在工作表中冻结尾部窗格。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 冻结尾部窗格
worksheet.freezeTrailingPanes(2, 3);
// 获取冻结的尾部行和列的数量
System.out.println("尾部行数为: " + worksheet.getFreezeTrailingRow() + "\n尾部列数为: " + worksheet.getFreezeTrailingColumn());
// 保存为 SJS 文件
workbook.save("freezetrailingrowscolumns.Sjs");参考以下示例代码取消工作表中的尾部冻结窗格。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 冻结尾部窗格
worksheet.freezeTrailingPanes(2, 3);
// 取消冻结尾部窗格
worksheet.unfreezeTrailingPanes();
// 保存为 SJS 文件
workbook.save("unfreezetrailingrowscolumns.Sjs");GcExcel Java 允许用户将工作表窗口拆分为多个独立的查看区域。通过拆分窗格,您可以同时查看和编辑同一工作表不同部分的数据,减少频繁滚动的需求。每个拆分的窗格都可以独立滚动,便于浏览和比较大量数据。
参考以下示例代码将工作表拆分为多个窗格。
// 创建一个新工作簿
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.getWorksheets().get(0);
// 将工作表拆分为独立的窗格
worksheet.splitPanes(5,6);
// 保存为 Excel 文件
workbook.save("SplitPanes.xlsx");输出结果如下图所示:

参考以下示例代码取消拆分窗格。
// 取消拆分窗格
worksheet.unsplitPanes();