發表文章

目前顯示的是 10月, 2021的文章

透過.NET c#產生 odt 格式文件OpenDocument 文字 (.odt)

圖片
現在政府機關都會要求資訊人員要能產出可編輯的ODT文件,供下屬單位填報資料時運用,而不能使用原來的 Word Docx等格式。 如果把一個odt檔案的副檔名改為.zip,再用解壓縮檔解開,可以看到當中有content.xml這個檔案,他其實就是我們在LibreOffice內所編輯的文件內容(context)。所以準備好一個乾淨的範本文件,將content.xml置換為我們需要的內容,再重新壓縮該檔案、更改檔名,就能產出我們要的odt檔案。 一個基本的content.xml背後基礎是XML文件跟樣式檔,框架會包含字形、樣式以及文字。 <office:document-content office:version="1.2"> <office:font-face-decls> </office:font-face-decls> <office:automatic-styles> </office:automatic-styles> <office:body> <office:text text:use-soft-page-breaks="true"> <text:p text:style-name="P1">Hello World</text:p> </office:text> </office:body> </office:document-content> 該檔案遵循XML架構,但對不熟悉tag樣式標註方法的人,要手動拼湊出所有的樣式非常困難,必須靠不斷的預覽來比較跟Word文件裡所見到的內容,這也是早期OpenOffice常常被說做出來的元件不像Word,無法真正所見即所得的原因。所以,透過Word轉出包含大部分文件格式的框架,存成範本文件,再由C#讀出文字並替換需要的內容或表格,會是較簡便的方法。 以第一個區段而言,我們可以看到檔案中所用到的字形 以第二個區段而言,我們可以看到他用類似CSS標註方式的格式,將文字區段內用到的每個樣式都列出。以最佳化的角度而言,很多樣式應該是重複的,可以不用列出這麼多筆。但Word產出的東西就是這樣,有時一個反覆編輯的檔案,樣式設...