38

我一直在使用 EPPlus 为我的项目需要我执行的导出数量生成 Excel 文件。他们想要的大多数导出往往与他们在遗留系统中已有的导出完美匹配。然而,其中之一,他们想要不同。他们希望在完成一些典型和特定的编辑后,它看起来与旧系统中的一个导出完全一样。

但是,他们所做的一些编辑使每一行都比他们想要的要长得多,因此他们希望将一些列信息锁定在屏幕上,而其余列可以正常滚动(即Excel的拆分功能)。我试过用 锁定列ws.Column(6).Style.Locked = true,但这似乎不起作用。我也尝试将单元格范围的Locked属性设置为 true,但这也没有奏效。

如何将列冻结到位?

4

2 回答 2

67

事实证明,EPPlus 有一个内置函数可以在Worksheet对象本身上执行此操作,称为FreezePanes. 该函数有 2 个参数,它们都是int:Row 和 Column。这样做会在查看工作表时冻结您希望锁定到位的任何行或列。

EPPlus 网站上的示例之一使用它,尽管它不是示例的主要焦点/可以在此处找到该示例。

但是,您应该了解此函数的一个问题:用于行或列参数的数字实际上是第一列未冻结到位。换句话说,如果您想冻结前 5 列,则必须进行以下调用:

ws.View.FreezePanes(1,6)(其中 6 是未冻结的第一列)

于 2013-08-12T15:29:26.140 回答
15

我意识到在使用@IronMan84 的建议时,如果您只对行感兴趣而不对列感兴趣。您可以使用

ws.View.FreezePanes(3, 1); // (Freeze Row 2 and no column)
于 2017-09-19T09:39:48.253 回答