爱迪生 发表于 2022-1-20 19:32:48

GCExcel5.0新特性 - 工作簿视图(Workbook Views)

Excel 提供三种预定义视图,普通视图、页面布局和分页预览。
普通:是新工作表的默认视图。
页面布局:通过使用此视图,我们将看到打印文档的预览。这是查看页面开始和结束位置以及查看文档中可能包含的页眉和页脚的好方法。
分页预览:通过使用此视图,我们可以看到打印文档时分页符的位置。
Excel 还提供自定义视图供用户自定义视图。使用自定义视图,您可以建立某些显示和打印设置,例如无网格线或标题、特定边距和特定工作簿视图。然后保存该视图,以便您可以轻松地将其应用到电子表格中。您甚至可以创建多个视图。(关于自定义视图的使用,参考:https://zhuanlan.zhihu.com/p/69855000)

GCExcel5.0对该功能进行了支持。
下面介绍该功能的一些使用说明:
每个工作表都有自己的视图,每个自定义视图保存当前工作簿所有工作表的视图状态。
IWorksheetView.ViewType 表示三个预定义视图,Normal、Page Layout 和 Page Break Preview。
IWorkbook.CustomViews 是自定义视图的集合。
使用 Add 方法创建一个新的自定义视图。该视图用于存储当前工作簿的所有工作表的显示、打印设置。
如果此工作簿具有表格或数据透视表,则不允许添加自定义视图。它将抛出异常:“此工作簿具有表格或数据透视表,不允许添加自定义视图。”。
如果视图名称已存在,则将从集合中删除原始视图,并将新视图和设置添加到集合中。
如果视图名称为空或空格,则会抛出异常:“此视图名称为空或空格”。
使用 Count 获取当前工作簿的所有自定义视图的数量。
使用 this 获取特定视图。
ICustomView 表示自定义工作簿视图。
ICustomView .Name 表示自定义视图的名称,该名称不区分大小写。
ICustomView .RowColSettings 指示自定义视图是否包含隐藏行和列的设置(包括过滤器信息)。
ICustomView .PrintSettings 指示自定义视图是否包含打印设置。
调用 ICustomView.Show 将使工作簿应用此视图。
调用 ICustomView.Delete 将从 workbook.CustomViews 中删除此视图。
需要注意的是,SpreadJS不支持此功能,
与此功能相关的API有以下几个:
public interface IWorksheetView
{
    // 获取和设置视图类型
    ViewType ViewType { get; set; }
}// 表示工作表的视图类型
public enum ViewType
{
// 普通
    NormalView,

    //分页预览
    PageBreakPreview,
public interface IWorkbook
{
// 获取工作簿自定义视图
    ICustomViews CustomViews{ get;}
}// 自定义工作簿视图的集合。
public interface ICustomViews : IEnumerable<ICustomView>
{
    //返回集合中对象的数量(只读)
    int Count { get; }

    //使用名称获取自定义工作簿视图。
    // <param name="viewName">自定义工作簿视图的名称。</param>
    ICustomView this { get; }

    //创建一个新的自定义视图。
    // <param name="viewName">新视图的名称</param>
    // <param name="printSettings">设置为True则在自定义视图中包含打印设置</param>
    // <param name="rowColSettings">设置为True则 在自定义视图中包含隐藏行和列的设置(包括过滤信息)</param>
    // <returns>新的自定义视图</returns>
    ICustomView Add(string viewName, bool printSettings, bool rowColSettings);
}//自定义工作簿视图。
public interface ICustomView
{
    // 获取对象的名称
    String Name { get; }

    // 如果自定义视图包含隐藏行和列的设置(包括过滤器信息),则为True
    bool RowColSettings { get; }

    //如果打印设置包含在自定义视图中,则为True
    bool PrintSettings { get; }

    //所有工作簿工作表都应用此视图。
    void Show();

    // 从其父 <see cref="ICustomViews"/> 对象中删除此 <see cref="ICustomView">自定义视图</see>
    void Delete();
}简单示例1.设置视图类型:IWorkbook workbook = new Workbook();
IWorksheet worksheet = workbook.ActiveSheet;

worksheet.Range["J12"].Value = 1;

//设置工作表的视图类型为分页预览
worksheet.SheetView.ViewType = ViewType.PageBreakPreview;
//设置分页预览缩放为80%.
worksheet.SheetView.Zoom = 80;

workbook.Save("export.xlsx");2.添加自定义视图Workbook workbook = new Workbook();
IWorksheet worksheet1 = workbook.ActiveSheet;
IWorksheet worksheet2 = workbook.Worksheets.Add();

worksheet1.Range["J12"].Value = 1;
worksheet2.Range["J12"].Value = 2;

// 添加一个名为Normal的视图.
workbook.CustomViews.Add("Normal", true, true);

worksheet1.PageSetup.PrintArea = "$C$4:$J$12";
worksheet2.PageSetup.PaperSize = PaperSize.A4;

// 添加一个保存所有工作表的当前页面设置的新视图
workbook.CustomViews.Add("PrintSetting", true, false);

worksheet1.Range["5:6"].Hidden = true;
worksheet2.Range["5:6"].Hidden = true;
// 添加一个保存当前所有工作表隐藏行/列,过滤所设置的新视图。
workbook.CustomViews.Add("HiddenRows", false, true);

// 在导出的文件中,用户可以在这两个视图之间切换。
workbook.Save("export.xlsx"); 3.设置当前工作簿展示的视图类型IWorkbook workbook = new Workbook();
IWorksheet worksheet = workbook.ActiveSheet;

worksheet.Range["J12"].Value = 1;
worksheet.Range["A1:B2, B2:C3, C3:D4"].Select();
workbook.CustomViews.Add("Selection1", true, true);

worksheet.Range["E5:F9"].Select();
workbook.CustomViews.Add("Selection2", true, true);

workbook.CustomViews["Selection1"].Show();

workbook.Save("export.xlsx");

页: [1]
查看完整版本: GCExcel5.0新特性 - 工作簿视图(Workbook Views)