1.建立word模板檔案 person.dot
2.建立web應用程式 加入Microsoft.Office.Interop.Word引用
3.相關範例程式碼
========================
1.建立word模板檔案 person.dot
用書籤 標示相關欄位的填充位置
2.建立web應用程式 加入Microsoft.Office.Interop.Word引用
具體添加引用請參看
http://www.microsoft.com/china/msdn/library/office/office/OfficePrIntopAssFAQ.mspx?mfr=true
3.相關範例程式碼
以下代碼改編自
http://blog.ccidnet.com/blog-htm-do-showone-uid-9416-type-blog-itemid-145551.html
protected void Button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Word.ApplicationClass appWord = null; //應用程式
Microsoft.Office.Interop.Word.DocumentClass doc = null; //文檔
try
{
appWord = new ApplicationClass();
appWord.Visible = false;
object objTrue = true;
object objFalse = false;
object objTemplate = Server.MapPath("person.dot"); //模板路徑
object objDocType = WdDocumentType.wdTypeDocument;
doc = (DocumentClass)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue);
//第一步產生word文檔
//定義書籤變數
object obDD_Name = "bm_Name"; //姓 名
object obDD_Sex = "bm_Sex"; //性 別
object obDD_Birthday = "bm_Birthday"; //出生年月
//第二步 讀取資料,填充資料集
System.Data.DataTable dt = new DataTable();
dt.Columns.Add("p_Name");
dt.Columns.Add("p_Sex");
dt.Columns.Add("p_Birthday");
DataRow dr = dt.NewRow();
dr["p_Name"] = "張三";
dr["p_Sex"] = "男";
dr["p_Birthday"] = "1980-01-01";
dt.Rows.Add(dr);
//第三步 給書籤賦值
//給書籤賦值
doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = dt.Rows[0]["p_Name"].ToString(); //姓 名
doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = dt.Rows[0]["p_Sex"].ToString();//性 別
doc.Bookmarks.get_Item(ref obDD_Birthday).Range.Text = dt.Rows[0]["p_Birthday"].ToString();//年齡
//第四步 產生word
object filename = Server.MapPath("~") + "//" + dt.Rows[0]["p_Name"].ToString() + ".doc";
object miss = System.Reflection.Missing.Value;
doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object missingValue = Type.Missing;
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Application.Quit(ref miss, ref miss, ref miss);
doc = null;
appWord = null;
}
catch (System.Exception ex)
{
//捕捉異常,如果出現異常則清空執行個體,退出word,同時釋放資源
string aa = ex.ToString();
object miss = System.Reflection.Missing.Value;
object missingValue = Type.Missing;
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Application.Quit(ref miss, ref miss, ref miss);
doc = null;
appWord = null;
}
}
-----
以上代碼在運行時 如遭遇80070005錯誤
解決方案一:
1. 控制台-》管理工具-》元件服務-》電腦-》我的電腦-》DCom配置-》找到Microsoft Word文檔, 之後, 單擊屬性開啟此應用程式的屬性對話方塊。
2. 單擊標識選項卡,然後選擇互動式使用者。
3. 單擊"安全"選項卡,分別在"啟動和啟用許可權"和"存取權限"組中選中"自訂", 然後, 自訂->編輯->添加ASP.NET賬戶和IUSER_電腦名稱
4. 確保允許每個使用者訪問,然後單擊確定。
5. 單擊確定關閉 DCOMCNFG。
解決方案二:
如果上述方法不能解決問題,就應該是許可權問題,請嘗試用下面的方法:
在web.config中使用身份類比,在<system.web>節中加入<identity impersonate="true" userName="你的使用者名稱" password="密碼"/>
詳細解決辦法請參看
http://blog.csdn.net/lizhizhe2000/archive/2007/03/16/1531417.aspx
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/my98800/archive/2009/07/20/4360805.aspx