<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 電子表格。這需要一些編程,但它確實有效。
你好,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 中不行。更有理由忽略它了。