通过 ASP.Net s-s-rS ReportViewer 呈现后更改 Excel 中的行高

Posted

技术标签:

【中文标题】通过 ASP.Net s-s-rS ReportViewer 呈现后更改 Excel 中的行高【英文标题】:Changing Row Height in Excel after Rendering by ASP.Net s-s-rS ReportViewer 【发布时间】:2010-01-21 18:45:58 【问题描述】:

我有一个 s-s-rS 报告,其中有一个 Comments 字段,其中有足够的文本来跨越每条记录的多行。它在 ASP.Net ReportViewer 控件中呈现良好,但是当它被导出时,格式可能会有所不同。导出到 Word 看起来很棒。但是导出到 Excel 和 PDF 时,每条记录的行高永远不会超过默认值,因此文本只会被截断。在 Excel 中,我可以进入并双击单个或多个行高来修复它们,但这是我们不想要的额外步骤。

由于没有来自 ReportViewer 的“导出”事件,我该如何修复它以便它在 Excel 中正确导出/格式化?有没有办法在渲染时在 ReportViewer 中执行此操作,或者我是否需要考虑生成 Excel 文件,然后在事后使用 VBA 代码对其进行更改?有什么想法吗?

【问题讨论】:

【参考方案1】:

如果用户正在使用报表管理器,您确实无法判断用户何时点击导出按钮。但是,如果您提供自己的 Web 界面来生成报告,则可以控制该过程。您可以使用web services 从 s-s-rS 获取报告。然后,您可以使用服务器端 Excel 操作工具(如 SoftArtisans OfficeWriter)open and post-process 代码中的电子表格并将其流式传输给用户。

免责声明:我为 SoftArtisans 工作

【讨论】:

【参考方案2】:

不幸的是,您无法对内置的 reportViewer 渲染器进行很多调整。您可以通过 DeviceInfo 字符串调整渲染器的一些输出,但是对于您尝试执行的操作没有任何作用。 (Information on DeviceInfo)

您可以购买一些 3rd 方渲染器,这将使您有更多的控制权。我从来没有遇到过免费的。

您可以开始编写自己的渲染器,但我强烈建议您不要这样做,因为在这种情况下这将是多余的(需要很长时间才能完成)。

除此之外,您还可以编写一些代码通过 COM 打开 Excel 文件,并更改文件。您实际上可以在导出完成后立即对其进行编码,从而简化它。或者,您也可以像您提到的那样为 Excel 编写一些 VBA 宏。

【讨论】:

事后编码的问题是我不知道他们什么时候开始点击导出按钮。 :( 我有 Infragistics 和 Telerik 许可证,我想也许我可以使用他们的报告工具之一,但我喜欢让我的用户能够使用 ReportBuilder 之类的工具与 s-s-rS 一起工作的想法。如果大人物让这成为一个交易破坏者,我可能会走 Telerik 路线。最初我在想也许是我在 s-s-rS 中格式化报告本身的方式导致了问题。但可能不是。感谢您的回复!

以上是关于通过 ASP.Net s-s-rS ReportViewer 呈现后更改 Excel 中的行高的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 报告未在 ASP.NET 网站中呈现

如何在 asp.net 应用程序中本地使用 s-s-rS

s-s-rS 报告查看器 + ASP.NET 凭据 401 异常

s-s-rS2008 ASP.NET ServerReport 在 IE11 上使用 OEM UserAgent 失败

在 ASP.net MVC 站点中查看 s-s-rS 报告

如何使用 c# 在 asp.net 页面中部署或显示 s-s-rS 报告?