国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#實現對Word文件讀寫[轉]

2019-11-14 16:30:48
字體:
來源:轉載
供稿:網友

   手頭上的一個項目報表相對比較簡單,所以報表打印采用VBA引擎,通過定制Word模版,然后根據模版需要填充數據,然后OK,打印即可。

  實現方法:首先需要引用VBA組建,我用的是Office2003 PRofessional,Dll版本號為Microsoft Word11.0

 

 

 另外當然還需要引用Interop.Word.Dll.

  代碼如下:

///#region 打開Word文檔,并且返回對象wDoc,wDoc/// /// 打開Word文檔,并且返回對象wDoc,wDoc/// /// 完整Word文件路徑+名稱 /// 返回的Word.Document wDoc對象/// 返回的Word.application對象public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp){if(FileName == "") return;Word.Document thisDocument = null;Word.FormFields formFields = null;Word.Application thisApplication = new Word.ApplicationClass();thisApplication.Visible = true;thisApplication.Caption = "";thisApplication.Options.CheckSpellingAsYouType = false;thisApplication.Options.CheckGrammarAsYouType = false;Object filename = FileName;Object ConfirmConversions = false;Object ReadOnly = true;Object AddToRecentFiles = false;Object PasswordDocument = System.Type.Missing;Object PasswordTemplate = System.Type.Missing;Object Revert = System.Type.Missing;Object WritePasswordDocument = System.Type.Missing;Object WritePasswordTemplate = System.Type.Missing;Object Format = System.Type.Missing;Object Encoding = System.Type.Missing;Object Visible = System.Type.Missing;Object OpenAndRepair = System.Type.Missing;Object DocumentDirection = System.Type.Missing;Object NoEncodingDialog = System.Type.Missing;Object xmlTransform = System.Type.Missing;try{Word.Document wordDoc =thisApplication.Documents.Open(ref filename, ref ConfirmConversions,ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,ref NoEncodingDialog, ref XMLTransform );thisDocument = wordDoc;wDoc = wordDoc;WApp = thisApplication;formFields = wordDoc.FormFields;}catch(Exception ex){MessageBox.Show(ex.Message);}}#endregion調用上面靜態方法,打開目標文件并且把DataGrid中數據填充到對應Word標簽中去///#region Word填充數據(For Example)/// /// Word填充數據/// private void WordLoadData(){Word.Document wDoc=null;Word.Application wApp=null;sysFun.CreateWordDocument("E://監測報告(new).dot",ref wDoc,ref wApp);//對標簽"C"進行填充object bkmC="C";if(wApp.ActiveDocument.Bookmarks.Exists("C") == true){wApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();}wApp.Selection.TypeText(this.txt1.Text);object bkmG = "TWaterTable3";object unit; object count; //移動數object extend;extend = Word.WdMovementType.wdExtend;unit = Word.WdUnits.wdCell;//把DataGrid中數據填充到標簽TWaterTable3上if(wApp.ActiveDocument.Bookmarks.Exists("TWaterTable3") == true){wApp.ActiveDocument.Bookmarks.get_Item(ref bkmG).Select();for(int i=0;i {if(i==0){count=1;}else{count=0;}//需填充5列數據wApp.Selection.Move(ref unit,ref count);wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[0].Text);count=1;wApp.Selection.Move(ref unit,ref count);wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[1].Text);wApp.Selection.Move(ref unit,ref count);wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[2].Text);wApp.Selection.Move(ref unit,ref count);wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[3].Text);wApp.Selection.Move(ref unit,ref count);wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[4].Text);//換行wApp.Selection.MoveRight(ref unit,ref count,ref extend);}}}#endregion  然后就OK了,在對標簽表控制要注意列循環和換行.C#操作Excel(導入導出)  有很多朋友說需要C#導出到Excel的代碼,現共享給大家/// /// 讀取Excel文檔/// /// 文件名稱/// 返回一個數據集public DataSet ExcelToDS(string Path){string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null;DataSet ds = null;strExcel="select * from [sheet1$]";myCommand = new OleDbDataAdapter(strExcel, strConn);ds = new DataSet();myCommand.Fill(ds,"table1"); return ds;}/// /// 寫入Excel文檔/// /// 文件名稱public bool SaveFP2toExcel(string Path){try{string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";OleDbConnection conn = new OleDbConnection(strConn);conn.Open(); System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();cmd.Connection =conn;//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工號='日期'";//cmd.ExecuteNonQuery ();for(int i=0;i {if(fp2.Sheets [0].Cells[i,0].Text!=""){cmd.CommandText ="INSERT INTO [sheet1$] (工號,姓名,部門,職務,日期,時間) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";cmd.ExecuteNonQuery ();}}conn.Close ();return true;}catch(System.Data.OleDb.OleDbException ex){System.Diagnostics.Debug.WriteLine ("寫入Excel發生錯誤:"+ex.Message );}return false;}  這種方法是相當有效的?! ∠赂剑篤B.NET版實現word打開與關閉,有興趣的朋友可以研究一下VB.NET實現word打開與關閉Imports Word'打開Dim mWordapp As Word.Application 'word 應用程序Dim mobjDoc As Word.Document 'word 文檔Dim fullFileName as string '文件路徑mWordapp = CreateObject("Word.Application")mobjDoc = mWordapp.Documents.Add(FullFileName)'關閉Dim missing As Object = System.Reflection.Missing.ValuemWordapp.Application.Quit()If Not mobjDoc Is Nothing Then'垃圾回收System.Runtime.InteropServices.Marshal.ReleaseComObject(mobjDoc)mobjDoc = NothingEnd IfIf Not mWordapp Is Nothing ThenSystem.Runtime.InteropServices.Marshal.ReleaseComObject(mWordapp)mWordapp = NothingEnd If'真正釋放word進程

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苗栗县| 南靖县| 浦江县| 淮南市| 和静县| 什邡市| 保靖县| 祥云县| 扬中市| 疏附县| 磐安县| 四会市| 武邑县| 宜都市| 康乐县| 吉林市| 南乐县| 昌黎县| 邢台市| 关岭| 永顺县| 邵阳县| 龙川县| 武冈市| 德州市| 包头市| 镇平县| 昭觉县| 育儿| 米脂县| 英德市| 辛集市| 靖边县| 白山市| 蒲城县| 建宁县| 栾川县| 宝丰县| 广德县| 容城县| 鹰潭市|