workbook 中常用属性之 customWorkbookViews

新建自定义视图

在视图菜单下的自定义视图按钮, 点击可以新增自定义视图。

点击之后会弹出一个添加视图的确认框, 需要输入视图的名称, 同时可以对视图进行简单的设置。

新建完之后,再次点击自定义视图, 会显示如下的弹框。 选中要展示的自定义视图,点击显示即可。

自定义视图的数据结构

workbook.xml

xml 复制代码
<customWorkbookViews>
    <customWorkbookView name="test" guid="{26ADEF9F-F3BF-104A-9074-B01F9CD9839B}" xWindow="315" yWindow="263" windowWidth="1802" windowHeight="936" activeSheetId="1"/>
</customWorkbookViews>

sheet1.xml

xml 复制代码
<customSheetViews>
    <customSheetView guid="{622782F9-2179-0A40-8982-4D3E81C07BDC}" filter="1" showAutoFilter="1">
      <selection activeCell="B2" sqref="B2"/>
      <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
      <autoFilter ref="D3:G14" xr:uid="{49FBCA9A-6900-3447-958F-3EEB77EC5F75}">
        <filterColumn colId="3">
          <filters blank="1">
            <filter val="范德萨发的"/>
          </filters>
        </filterColumn>
      </autoFilter>
    </customSheetView>
  </customSheetViews>

如果看自定义视图的属性的话, 会发现大部分的数据跟 workbookView 是一样的。 关于 workbookView 的介绍可以查看这篇文章: juejin.cn/post/726629...

常用属性介绍

OOXML 里面定义的 customWorkbookView 的属性, 这里会介绍几个常用属性。

像 xWindow、yWindow 等这些属性, 在之前的 bookView 的文章中已经有了介绍, 这里不再赘述。 和 bookView 不同的是:

name

自定义视图的名称,用户后续可以选中视图名称来切换视图。

guid

唯一ID, 这个 ID 和 sheet1.xml 里面的 customSheetView 的 guid 一致。

includeHiddenRowCol

这个属性是一个 boolean 值, 默认为 true。 也就是上面新建视图时的"隐藏行、列及筛选设置"。 如果把这个勾选去掉的话:

sheet1.xml

xml 复制代码
<customSheetView guid="{D4576626-4D54-6F4B-876C-F7D79DE16676}">
      <selection activeCell="D3" sqref="D3:I19"/>
</customSheetView>

worksheet 里面的 customSheetView 则不会有筛选的内容。 这里说的筛选的内容主要是被筛选隐藏的行列、筛选内容,条件, 当你打开这个视图的时候, 筛选和筛选条件就会展示你创建视图时候的状态。 去掉勾选不表示不能使用筛选,而是和原表共用的一个筛选及筛选条件,原表更新的时候, 视图也会更新。

workbookView 和 customWorkbookView 的区别

workbookView 在 Excel 的实现中, 是一个自定义的窗口。 也就是相当于你可以同时打开一个 Excel 文件两次, 两个窗口是独立的, 并且关闭窗口之后, ooxml 中的数据会被清除只保留一个默认的。 在自定义视图中, 你所有新增的视图在关闭窗口之后都是会保留的。

相关推荐
用户479492835691511 小时前
Chrome DevTools MCP:让 AI 助手直接操作浏览器开发工具
前端·javascript·chrome
Rysxt_11 小时前
Vuex 教程 从入门到实践
前端·javascript·vue.js
by__csdn11 小时前
Node.js版本与npm版本的对应关系
前端·npm·node.js
AI_567812 小时前
Webpack性能优化终极指南:4步实现闪电打包
前端·webpack·性能优化
dreams_dream12 小时前
Django序列化器
后端·python·django
懷淰メ12 小时前
python3GUI--短视频社交软件 By:Django+PyQt5(前后端分离项目)
后端·python·django·音视频·pyqt·抖音·前后端
xuehuayu.cn12 小时前
js es6 class 类中的值是异步赋值, 子类中如何获取这个值?
javascript·es6
威风的虫12 小时前
ES6 数组方法:告别循环,拥抱函数式编程
开发语言·前端·javascript
小杨快跑~12 小时前
ES6 Promise:告别回调地狱的异步编程革命
前端·javascript·ecmascript·es6
linweidong12 小时前
VIVO前端面试题及参考答案
前端·跨域·localstorage·重绘·浏览器兼容·git管理·前端重构