<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我需要以非常特定的格式将我创建的报告导出到 MS Word。我可以将其导出为 PDF 文件,这非常有用关闭我想要它在 MS Word 中的外观,但我需要尽可能地改进它的外观,以最大程度地减少导出后所需的编辑量。 为了说明我想要做什么,我在下面附上了一个简短的脚本,该脚本创建一个包含一些标题、几个表格和一个页脚的简单报告,然后以三种不同的格式导出该报告,即 PDF 文件、MS 文件Word 文档和 HTML 文件。
报告的 PDF 版本的创建方式与我希望它在 MS Word 版本中的显示方式非常相似,其中标题居中、字体大小不同以及脚本中指定的表格样式(“标题分隔符”和“边框”)。然而,MS Word 版本失去了标题居中、字体大小设置和表格样式 - 如果可能的话,我希望保留所有这些功能。
同样在 MS Word 版本中,每一行实际上都是一个文本框(您可以通过在 Word 中打开文档,使用 -A 突出显示所有内容,然后向所选内容添加边框来看到这一点)。当然,这就是所有东西最初出口的方式,因此一点也不奇怪;然而我注意到 HTML 版本不将两个标题和页脚视为方框,而只是文本行 - 这实际上是我希望它们在 MS Word 版本中出现的方式。
因此我的问题是:
- 导出到 MS Word 时是否可以保留 (a) 居中和/或 (b) 字体大小设置?
- 是否可以将简单的文本行(而不是文本框)导出到 MS Word?
- 导出到 MS Word 时是否可以保留指定的表格样式(例如“边框”或“标题分隔符”)?
我猜想其中一些(如果不是全部)是不可能的——但我从过去的经验中知道,如果你碰巧知道如何去做,通常有办法解决这些小问题。任何人都可以帮助我解决上述任何问题吗?
非常感谢 - 这是我提到的演示脚本:
我的表格框1 =桌盒(
字符串列框( “位置” , { “第一的” , “第二” , “第三” , “第四” , “第五” }) ,
字符串列框( “描述” , { “水” , “硫酸” , “氧” , “硫化氢” , “氯化钠” }) ,
字符串列框( “公式” , { “水” , “硫酸” , “氧气” , “硫化氢” , “氯化钠” }) ,
<<表格样式( “标题分隔符” )
) ;
我的表格框2 =桌盒(
字符串列框( “镇” , { 「阿伯丁」 , “卡迪夫” , “伦敦” , “曼彻斯特” }) ,
编号栏框( “人口” , [ 212125 , 324800 , 8174000 , 512000 ]) ,
<<表格样式( “有边界” )
) ;
我的标题=文本框( “这是我的主标题” , <<对齐文本(中心) , <<设置字体大小( 14 ) , <<字体颜色({ 0 , 0 , 0.5 }) , <<设置宽度( 200 )) ;
我的字幕=文本框( “这是我的副标题” , <<对齐文本(中心) , <<设置字体大小( 9 ) , <<字体颜色({ 0 , 0 , 1 }) , <<设置字体样式( “斜体” )) ;
我的空白线=文本框( ” “ , <<设置字体大小( 12 )) ;
我的脚注=文本框( “这是我的脚注” , <<设置字体大小( 9 ) , <<对齐文本(中心)) ;
卢布=排队框(恩科尔( 1 ) ,
我的标题,
我的字幕,
我的空白线,
我的表格框1 ,
我的空白线,
我的表格框2 ,
我的空白线,
我的脚注
) ;
西北=新窗户( 《我的窗户》 ,卢布) ;
卢布<<保存PDF ( “C:\Documents\我的报告.pdf” ) ;
卢布<<保存 MS Word ( “C:\Documents\我的报告.doc” ) ;
卢布<<保存 HTML ( “C:\Documents\我的报告.html” ) ;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />从 JMP 的角度来看,这里使用两种导出方式。 HTML 和 DOC 导出为具有最少样式信息的结构化文本。 PDF(以及 EPS 和 SVG 等其他格式)导出为图形,保留样式和布局,但不保留结构。
关于文本是否位于单独的行上,JMP 尝试通过在文本之间发出行分隔符将它们放在单独的行上,但 HTML 将行分隔符视为常规空格,这解释了与 DOC 的区别。 如果您确实正在寻找一种极端的解决方法,我确实在 JMP 中找到了一个可以导出不带行分隔符或其他装饰的文本的位置,那就是导出 ComboBox 时。但是,如果您要使用如此长的长度并丢失样式,你不妨只制作一个巨大的文本框。
顺便说一句,很好清晰的例子。
如果您愿意进行一些编程,您可以通过以下方法获得确切的格式:
- 使用Word 2003 XML 文档格式将其另存为 XML 文件
- 在 JSL 中,使用真实数据创建此 XML 文件。使用 .XML 扩展名保存文本
我已经使用这种方法来生成多选项卡 Excel 电子表格。这需要一些编程,但它确实有效。
谢谢你的建议!!
它有效。我只需要将文件从 filename.doc.jmp 重命名为 .doc
您能告诉我如何将页面调整为横向吗?
也许我需要缩放页面...
你好,Xan,
谢谢你的指点;看来我得更巧妙一点才能达到我想要的效果,因为我觉得一个巨大的文本框解决不了我的问题,除非我能在里面加一个表格——而我实在想不出有什么办法。我会继续尝试,如果成功了再来这里发帖——不过,与此同时,你能详细解释一下关于组合框的评论吗?我试过在我的“排列框”里加一个组合框,但它似乎根本无法导出到Word或HTML文件中。
非常感谢
这听起来很巧妙——我目前几乎没有编写 XML 文件的经验,但我一定会尝试一下。
非常感谢!
你好,
我意识到已经有一个关于生成报告的主题。
我需要为多个参数(参数数量可以从 1 到 500 不等)生成一份报告(MS Mord 或保存为 PDF 文件)。
一个参数对应一个页面。通过书签可以浏览整个文档。
XML 方法似乎非常有趣。我对 XML 不太熟悉,而且刚开始学习 JSL。
您能否通过示例来介绍您的方法,以便我根据自己的需要进行修改?
也许可以使用我附加的文件?
附加的数据集包含多个“正态分位数图”的脚本。
我希望能够根据某个模板在 JSL 的帮助下生成 MS Word 文档,该模板可以用任意模板替换。
我已附上:
带有用于生成多个图表的脚本的数据集(顺便说一句:感谢社区的帮助)
从 MS Word“模板”文件转换而来的 PDF
从 MS Word“模板”转换而来的 XML 文件(.zip 文件)
XML 文件可以用 MS Word 打开。
@马丁德梅尔
我尝试了一下,建议直接将 JMP 输出导出为 Word 文档。因为生成图表的“xml”代码非常困难。
看看这个示例程序。这种方法可能正合你意。你需要了解什么是 JSL 显示框。提示:脚本索引是你最好的朋友!
dt = open("$sample_data\Big Class.jmp");
nw = new window("Sample",
panelbox("Actions",
hlistbox(
msword_button = buttonbox("Save to MS-Word",
sample_output << save msword("", Native);
),
close_button = buttonbox("Close this window",
nw << close window;
),
),
),
sample_output = vlistbox(
tb = table box(
string col box("Name", (dt:name << get values)),
number col box("Age", (dt:age << get values)),
string col box("Name", (dt:sex << get values)),
),
page break box(),
dist = dt << Distribution(
Continuous Distribution( Column( :weight ) ),
Nominal Distribution( Column( :age ) )
),
),
msword_button << set icon("WinFileSave"),
close_button << set icon("Stop"),
tb << set underline headings(1) << set column borders(1)
<< Set Shade Alternate Rows(1);
);
Dodo wrote:
...in the meantime, could you elaborate on that comment about Combo Boxes please? I've tried adding one to my Line Up Box, but it doesn't seem to be exported at all in either Word or HTML.
看起来它们可以在 JMP 11 中导出,但在 JMP 10 中不行。更有理由忽略它了。