【发布时间】:2017-01-20 08:29:36
【问题描述】:
我一直在 Delphi(最高 XE7)中使用 TWebBrowser 组件来可视化和就地编辑 Microsoft Office 文档,并且它在 2010 之前的 Office 版本中运行良好。不幸的是,Office 2013 或 2016 存在可视化问题。我的情况是 TWebBrowser 位于 TPanel 内部,其 Align 属性设置为 alClient,但分配给 Office 文档的区域仅占用部分可用空间;除了功能区太大,文字扭曲......该文档仍然可以编辑,但看起来很糟糕。
我用来操作命令栏的代码(早在 Office 2003 中)不再适用于功能区...
那么,如何通过在 Delphi 的 TWebBrowser 中托管 Office 2013 或 2016 来解决此问题并很好地可视化 Office 文档(顺便说一下,存储在本地,而不是在云中)?
编辑:我确实在 TWebBrowser 控件中托管桌面 Word。这是我的代码,适用于 Office 2010 和以前的版本:
//Wb = name of TWEbBrowserControl
//F = name of Word document
try Wb.Navigate(F); except end;
//And to edit the document, this is a sample OnClick event of a button
procedure TForm1.pptBtnClick(Sender: TObject);
var
D:_Document;
begin
D:=Wb.Document AS _Document;
with D do
begin
Application.Selection.Paste;
Application.Selection.TypeParagraph;
_Release;
end;
end;
编辑:我意识到我与原来提到 Office 365 的标题混淆了。显然,这是一个具有云相关服务的平台的名称。实际上,我的意思是桌面版 Office 2013 或 2016 存在问题。
编辑:很抱歉,我也意识到我有时会谈论 2013 年和 2016 年的文件被删减......这不准确。问题不在于文档的格式,而在于嵌入到 TWebBrowser 控件中的 Office 应用程序的窗口:如果用户有 Office 2010 或更早版本,则没有问题;如果是最新版本,就会出现可视化问题。
编辑:我已降级到 Office 2010,但问题仍然存在。所以一定是因为我用的是Windows 10...
【问题讨论】:
-
我认为你错过了 Q 中的一些内容,到目前为止你尝试了什么?
-
我不明白对 Office 版本的引用。您是说在浏览器中托管 Office 2010 桌面吗?这不可能。您能否详细说明托管在什么中的内容?一个简单的minimal reproducible example 会让生活变得轻松,然后我们就会准确地知道你在做什么。
-
您好 Sierra,您是否知道 TWebbrowser 在 IE7 模式下运行并且需要做额外的工作来强制浏览器进入最新的文档模式?
-
@whosrdaddy 我希望 Office 365 能够完成这项工作。如果您控制 html 的生成,总是会更容易,而且肯定是通过响应元标记来实现的
-
@DavidHeffernan:我不会认为这是理所当然的!
标签: delphi office365 twebbrowser