今天看了靈感之源推薦的網站提供的CarlosAg.ExcelXmlWriter,感覺不錯,反編譯看了一下,實際上是在構造一個xml文檔,然後通過writer1.WriteProcessingInstruction("mso-application", "progid='Excel.Sheet'");來設定用excel開啟,這樣我們就很輕鬆獲得了一個excel,顯然這種方法不需要伺服器端安裝excel。
突然想到是否可以通過同樣的方式來產生word呢,答案是肯定的,這則blog指出了方法:
http://weblogs.asp.net/cnagel/archive/2004/09/25/234188.aspx
構造一個簡單例子體會一下,copy下面這段xml到notepad,儲存為test.doc,開啟看看.
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
<w:body>
<w:p>
<w:r>
<w:t>MS-2524, XML Web Services Programming</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>MS-2124, C# Programming</w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<w:t>NET2, .NET 2.0 Early Adapter</w:t>
</w:r>
</w:p>
</w:body>
</w:wordDocument>
那麼為什麼不能利用CarlosAg.ExcelXmlWriter同樣的原理來提供一個無需安裝word而產生word的類庫?
不過需要注意的是較低版本的word是否支援我沒有測試過,我是使用的Office 2003。Office 2003 XML Reference Schemas 可以在下面的地址下載到:
http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&displaylang=en
另外,靈感之源曾經提供過一個smartExcel的類庫,也可以不安裝excel而產生excel,但是原理與CarlosAg.ExcelXmlWriter不同,它應該是直接寫的符合excel格式的檔案,猜測而已.