溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中怎么操作Word表格

發(fā)布時(shí)間:2021-07-15 11:24:52 來(lái)源:億速云 閱讀:166 作者:Leah 欄目:編程語(yǔ)言

C#中怎么操作Word表格,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

using System;  using System.Collections;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Web;  using System.Web.SessionState;  using System.Web.UI;  using System.Web.UI.WebControls;  using System.Web.UI.HtmlControls;  using System.Configuration;  using System.IO;   using System.Reflection;  using System.Runtime.InteropServices ;  using System.Threading;   //C#操作Word表格public void MakeMyTable(DataTable DT,string strFilePath)    {          string strEnd   = this.txtEnd.Text.Trim().ToString();     string strStart = this.txtStart.Text.Trim().ToString();  //生成文檔分頁(yè)中的起始和終止頁(yè)     string strSign = "("+strStart + "-" + strEnd + ")";      //殺掉所有word進(jìn)程以保證速度     //KillWordProcess();      object Nothing = System.Reflection.Missing.Value;      object missing = System.Reflection.Missing.Value;      object filename= strFilePath;        Word.Application wordApp=new Word.ApplicationClass();      Word.Document wordDoc=wordApp.Documents.Add(  ref Nothing,ref Nothing,ref Nothing,ref Nothing);    //C#操作Word表格   try    {      //生成過(guò)程中屏蔽返回按扭,不允許中途停止      Button2.Enabled = false;      #region 生成文檔      //設(shè)置文檔寬度      wordApp.Selection.PageSetup.LeftMargin  =   wordApp.CentimetersToPoints(float.Parse("2"));      wordApp.ActiveWindow.ActivePane.HorizontalPercentScrolled = 11 ;      wordApp.Selection.PageSetup.RightMargin =   wordApp.CentimetersToPoints(float.Parse("2"));       Object start = Type.Missing;      Object end = Type.Missing;      Object unit = Type.Missing;      Object count = Type.Missing;      wordDoc.Range(ref start, ref end).  Delete(ref unit, ref count);    //C#操作Word表格    object rng = Type.Missing;      string strInfo = this.txtNameCh.  Text.ToString()+"明細(xì)表"+strSign+"\r\n";      start = 0;      end = 0;      wordDoc.Range(ref start, ref end).  InsertBefore(strInfo);      wordDoc.Range(ref start, ref end).  Font.Name = "Verdana";       wordDoc.Range(ref start, ref end).  Font.Size = 20;      wordDoc.Range(ref start, ref end).  ParagraphFormat.Alignment = Word.WdParagraphAlignment.  wdAlignParagraphCenter;       start = 8;      end = strInfo.Length;      wordDoc.Range(ref start, ref end).  InsertParagraphAfter();//插入回車       if(DT.Rows.Count>0)      {  //C#操作Word表格之存在數(shù)據(jù)項(xiàng)  //添加一個(gè)表格  object missingValue = Type.Missing;   object location = strInfo.Length;   //注:若location超過(guò)已有字符的長(zhǎng)度將會(huì)出錯(cuò)。一定要比"明細(xì)表"串多一個(gè)字符  Word.Range rng2 = wordDoc.Range(ref location, ref location);   wordDoc.Tables.Add(rng2, 13, 6, ref missingValue, ref missingValue);   wordDoc.Tables.Item(1).Rows.HeightRule =   Word.WdRowHeightRule.wdRowHeightAtLeast;  wordDoc.Tables.Item(1).Rows.Height = wordApp.  CentimetersToPoints(float.Parse("0.8"));  wordDoc.Tables.Item(1).Range.Font.Size = 10;  wordDoc.Tables.Item(1).Range.Font.Name = "宋體";  wordDoc.Tables.Item(1).Range.ParagraphFormat.Alignment =   Word.WdParagraphAlignment.wdAlignParagraphCenter;  wordDoc.Tables.Item(1).Range.Cells.VerticalAlignment =   Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;  //C#操作Word表格之設(shè)置表格樣式  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderLeft).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderLeft).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderLeft).Color =   Word.WdColor.wdColorAutomatic;   wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderTop).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderTop).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderTop).Color =   Word.WdColor.wdColorAutomatic;   wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderBottom).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderBottom).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderBottom).Color =   Word.WdColor.wdColorAutomatic;   wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderHorizontal).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderHorizontal).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderHorizontal).Color =   Word.WdColor.wdColorAutomatic;   wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderVertical).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderVertical).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderVertical).Color =   Word.WdColor.wdColorAutomatic;   wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderRight).LineStyle =   Word.WdLineStyle.wdLineStyleSingle;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderRight).LineWidth =   Word.WdLineWidth.wdLineWidth050pt;  wordDoc.Tables.Item(1).Borders.  Item(Word.WdBorderType.wdBorderRight).Color =   Word.WdColor.wdColorAutomatic;   //C#操作Word表格//wordDoc.Tables.Item(k).Borders.  Item(Word.WdBorderType.wdBorderDiagonalDown).  LineStyle = Word.WdLineStyle.wdLineStyleSingle;  //wordDoc.Tables.Item(k).Borders.  Item(Word.WdBorderType.wdBorderDiagonalDown).  LineWidth = Word.WdLineWidth.wdLineWidth050pt;  //wordDoc.Tables.Item(k).Borders.  Item(Word.WdBorderType.wdBorderDiagonalDown).  Color = Word.WdColor.wdColorAutomatic;  //第一行顯示  wordDoc.Tables.Item(1).Cell(1,2).  Merge(wordDoc.Tables.Item(1).Cell(1,3));  wordDoc.Tables.Item(1).Cell(1,4).  Merge(wordDoc.Tables.Item(1).Cell(1,5));   //第二行顯示  wordDoc.Tables.Item(1).Cell(2,5).  Merge(wordDoc.Tables.Item(1).Cell(2,6));  wordDoc.Tables.Item(1).Cell(1,4).  Merge(wordDoc.Tables.Item(1).Cell(2,5));   #region 插入數(shù)據(jù)行  wordDoc.Tables.Item(1).Cell(1, 1).Range.Text = "cell11";   //wordDoc.Tables.Item(k).Cell(1, 2).Range.Text =   DT.Rows[i]["cell11"].ToString();   ////******************  wordDoc.Tables.Item(1).Cell(1, 3).Range.Text = "cell13";   //wordDoc.Tables.Item(k).Cell(1, 4).Range.Text =   DT.Rows[i]["cell13"].ToString();   ////******************  wordDoc.Tables.Item(1).Cell(2, 1).Range.Text = "cell21";   //wordDoc.Tables.Item(k).Cell(2, 2).Range.Text =   DT.Rows[i]["cell21"].ToString();   ////******************  wordDoc.Tables.Item(1).Cell(2, 3).Range.Text = "cell23";   //wordDoc.Tables.Item(k).Cell(2, 4).Range.Text =   DT.Rows[i]["cell23"].ToString();   #endregion   //C#操作Word表格#region 第三行顯示  wordDoc.Tables.Item(1).Cell(3,2).  Merge(wordDoc.Tables.Item(1).Cell(3,3));  wordDoc.Tables.Item(1).Cell(3,2).  Merge(wordDoc.Tables.Item(1).Cell(3,3));   ////******************  wordDoc.Tables.Item(1).Cell(3, 1).Range.Text = "cell31";    ////******************  wordDoc.Tables.Item(1).Cell(3, 3).Range.Text = "cell33";    #endregion   #region 第五行顯示  wordDoc.Tables.Item(1).Cell(5,2).  Merge(wordDoc.Tables.Item(1).Cell(5,3));  wordDoc.Tables.Item(1).Cell(5,2).  Merge(wordDoc.Tables.Item(1).Cell(5,3));  wordDoc.Tables.Item(1).Cell(5,2).  Merge(wordDoc.Tables.Item(1).Cell(5,3));  wordDoc.Tables.Item(1).Cell(5,2).  Merge(wordDoc.Tables.Item(1).Cell(5,3));  #endregion   #region  第四行顯示   ////******************  wordDoc.Tables.Item(1).Cell(4, 1).Range.Text = "cell41";   ////******************  wordDoc.Tables.Item(1).Cell(4, 3).Range.Text = "cell43";    ////******************  wordDoc.Tables.Item(1).Cell(4, 5).Range.Text = "cell45";    #endregion   //C#操作Word表格#region 第六行顯示  wordDoc.Tables.Item(1).Cell(6,2).  Merge(wordDoc.Tables.Item(1).Cell(6,3));  wordDoc.Tables.Item(1).Cell(6,2).  Merge(wordDoc.Tables.Item(1).Cell(6,3));  wordDoc.Tables.Item(1).Cell(6,2).  Merge(wordDoc.Tables.Item(1).Cell(6,3));  wordDoc.Tables.Item(1).Cell(6,2).  Merge(wordDoc.Tables.Item(1).Cell(6,3));    ////******************  wordDoc.Tables.Item(1).Cell(5, 1).  Range.Text = "cell51";   wordDoc.Tables.Item(1).Cell(5, 2).  Range.ParagraphFormat.Alignment =   Word.WdParagraphAlignment.wdAlignParagraphLeft;       ////******************  wordDoc.Tables.Item(1).Cell(6, 1).Range.Text = "cdll61";   wordDoc.Tables.Item(1).Cell(6, 2).  Range.ParagraphFormat.Alignment =   Word.WdParagraphAlignment.wdAlignParagraphLeft;  #endregion    #region 第七行顯示  wordDoc.Tables.Item(1).Cell(7,2).  Merge(wordDoc.Tables.Item(1).Cell(7,3));  wordDoc.Tables.Item(1).Cell(7,2).  Merge(wordDoc.Tables.Item(1).Cell(7,3));  wordDoc.Tables.Item(1).Cell(7,2).  Merge(wordDoc.Tables.Item(1).Cell(7,3));  wordDoc.Tables.Item(1).Cell(7,2).  Merge(wordDoc.Tables.Item(1).Cell(7,3));   ////******************  wordDoc.Tables.Item(1).Cell(7, 1).Range.Text = "cell71";   wordDoc.Tables.Item(1).Cell(7, 2).Range.  ParagraphFormat.Alignment = Word.WdParagraphAlignment.  wdAlignParagraphLeft;  #endregion    #region 第八行顯示  wordDoc.Tables.Item(1).Cell(8,1).  Merge(wordDoc.Tables.Item(1).Cell(8,2));  wordDoc.Tables.Item(1).Cell(8,2).  Merge(wordDoc.Tables.Item(1).Cell(8,3));  wordDoc.Tables.Item(1).Cell(8,2).  Merge(wordDoc.Tables.Item(1).Cell(8,3));  wordDoc.Tables.Item(1).Cell(8,2).  Merge(wordDoc.Tables.Item(1).Cell(8,3));    #endregion    #region 第九行顯示  wordDoc.Tables.Item(1).Cell(9,1).Merge(wordDoc.Tables.Item(1).Cell(9,2));  wordDoc.Tables.Item(1).Cell(9,3).Merge(wordDoc.Tables.Item(1).Cell(9,4));   ////******************  wordDoc.Tables.Item(1).Cell(9, 1).Range.Text = "cell91";  //wordDoc.Tables.Item(k).Cell(9, 2).Range.Text =    (DT.Rows[i]["cell91"].ToString()=="1"?"有":"無(wú)");      //C#操作Word表格  ////******************  wordDoc.Tables.Item(1).Cell(9, 3).Range.Text = "cell93";       #endregion    #region 第十行顯示  wordDoc.Tables.Item(1).Cell(10,1).Merge(wordDoc.Tables.Item(1).Cell(10,2));  wordDoc.Tables.Item(1).Cell(10,3).Merge(wordDoc.Tables.Item(1).Cell(10,4));  ////******************  wordDoc.Tables.Item(1).Cell(10, 1).Range.Text = "cell101";        ////******************  wordDoc.Tables.Item(1).Cell(10, 3).Range.Text = "cdll103";  //wordDoc.Tables.Item(k).Cell(10, 4).Range.Text =   (DT.Rows[i]["Label"].ToString()=="1"?"有":"無(wú)");  #endregion    #region 第十一行顯示  wordDoc.Tables.Item(1).Cell(11,1).  Merge(wordDoc.Tables.Item(1).Cell(11,2));  wordDoc.Tables.Item(1).Cell(11,3).  Merge(wordDoc.Tables.Item(1).Cell(11,4));  ////******************  wordDoc.Tables.Item(1).Cell(11, 1).Range.Text = "cell111";     ////******************  wordDoc.Tables.Item(1).Cell(11, 3).Range.Text = "cell113";       #endregion    #region 第十二行顯示  wordDoc.Tables.Item(1).Cell(12,1).  Merge(wordDoc.Tables.Item(1).Cell(12,2));  wordDoc.Tables.Item(1).Cell(12,3).  Merge(wordDoc.Tables.Item(1).Cell(12,4));  ////******************  wordDoc.Tables.Item(1).Cell(12, 1).Range.Text = "cell121";    ////******************  wordDoc.Tables.Item(1).Cell(12, 3).Range.Text = "cell123";   #endregion    #region 第十三行顯示  wordDoc.Tables.Item(1).Cell(13,1).  Merge(wordDoc.Tables.Item(1).Cell(13,2));  wordDoc.Tables.Item(1).Cell(13,3).  Merge(wordDoc.Tables.Item(1).Cell(13,4));   ////******************  wordDoc.Tables.Item(1).Cell(13, 1).Range.Text = "cell131";   //C#操作Word表格 ////******************  wordDoc.Tables.Item(1).Cell(13, 3).Range.Text = "cell133";      #endregion   wordDoc.Tables.Item(1).Select();  wordApp.Application.Selection.Cut();   //重新成聲所有表          for(int i = 0; i<=DT.Rows.Count-1;i++)  {   wordApp.Application.Selection.Paste();   int k = i+1;   #region    更新數(shù)據(jù)     #region 插入數(shù)據(jù)行      wordDoc.Tables.Item(k).Cell(1, 2).Range.Text =   DT.Rows[i]["1"].ToString();        ////******************      wordDoc.Tables.Item(k).Cell(1, 4).Range.Text =   DT.Rows[i]["2"].ToString();        ////******************       wordDoc.Tables.Item(k).Cell(2, 2).Range.Text =   DT.Rows[i]["3"].ToString();     ////******************      wordDoc.Tables.Item(k).Cell(2, 4).Range.Text =   DT.Rows[i]["4"].ToString();    #endregion   //C#操作Word表格  #region 第三行顯示   ////******************      wordDoc.Tables.Item(k).Cell(3, 2).Range.Text =   DT.Rows[i]["5"].ToString();   ////******************      wordDoc.Tables.Item(k).Cell(3, 4).Range.Text =   DT.Rows[i]["6"].ToString();    #endregion     #region 第五行顯示   ////******************      wordDoc.Tables.Item(k).Cell(5, 2).Range.Text = DT.Rows[i]["7"].ToString();   wordDoc.Tables.Item(k).Cell(5, 2).Range.ParagraphFormat  .Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;   #endregion    #region  第四行顯示    ////******************      wordDoc.Tables.Item(k).Cell(4, 2).Range.Text = DT.Rows[i]["8"].ToString();        ////******************      wordDoc.Tables.Item(k).Cell(4, 4).Range.Text = DT.Rows[i]["9"].ToString();        ////******************      wordDoc.Tables.Item(k).Cell(4, 6).Range.Text = DT.Rows[i]["0"].ToString();   #endregion     #region 第六行顯示   ////******************      wordDoc.Tables.Item(k).Cell(6, 2).Range.Text =   DT.Rows[i]["11"].ToString();   wordDoc.Tables.Item(k).Cell(6, 2).Range.ParagraphFormat  .Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;   #endregion    //C#操作Word表格 #region 第七行顯示   ////******************      wordDoc.Tables.Item(k).Cell(7, 2).Range.  Text = DT.Rows[i]["12"].ToString();   wordDoc.Tables.Item(k).Cell(7, 2).Range.  ParagraphFormat.Alignment = Word.WdParagraphAlignment.  wdAlignParagraphLeft;   #endregion     #region 第八行顯示   ////******************      string strTechlevel = DT.Rows[i]["Level"].ToString();   string returnTechlevel = "";   switch(strTechlevel)   {    case "1":     returnTechlevel = "Level1";     break;    case "2":     returnTechlevel = "Level2";     break;    case "3":     returnTechlevel = "Level3";     break;    case "0":     returnTechlevel = "Level4";     break;    default:     returnTechlevel = "Level5";     break;   }   wordDoc.Tables.Item(k).Cell(8, 2).  Range.Text = returnTechlevel;    #endregion     #region 第九行顯示   ////******************      wordDoc.Tables.Item(k).Cell(9, 2).Range.Text =    (DT.Rows[i]["14"].ToString()=="1"?"有":"無(wú)");    //C#操作Word表格     ////******************      wordDoc.Tables.Item(k).Cell(9, 4).Range.Text =   (DT.Rows[i]["15"].ToString()=="1"?"是":"否");   #endregion     #region 第十行顯示   ////******************      wordDoc.Tables.Item(k).Cell(10, 2).Range.Text =    (DT.Rows[i]["16"].ToString()=="1"?"有":"無(wú)");        ////******************      wordDoc.Tables.Item(k).Cell(10, 4).Range.Text =   (DT.Rows[i]["17"].ToString()=="1"?"有":"無(wú)");   #endregion     #region 第十一行顯示    ////******************      wordDoc.Tables.Item(k).Cell(11, 2).Range.Text =    (DT.Rows[i]["18"].ToString()=="1"?"是":"否");     ////******************      wordDoc.Tables.Item(k).Cell(11, 4).Range.Text =   (DT.Rows[i]["19"].ToString()=="1"?"是":"否");   #endregion     #region 第十二行顯示   ////******************      wordDoc.Tables.Item(k).Cell(12, 2).Range.Text =    (DT.Rows[i]["20"].ToString()=="1"?"是":"否");    ////******************      wordDoc.Tables.Item(k).Cell(12, 4).Range.Text =    (DT.Rows[i]["21"].ToString()=="1"?"是":"否");   #endregion     #region 第十三行顯示       wordDoc.Tables.Item(k).Cell(13, 2).Range.Text =    (DT.Rows[i]["22"].ToString()=="1"?"是":"否");    ////******************      wordDoc.Tables.Item(k).Cell(13, 4).Range.Text =    (DT.Rows[i]["23"].ToString()=="1"?"是":"否");   #endregion    #endregion    //插入分頁(yè)   if(i!=DT.Rows.Count-1)   {    object mymissing = System.Reflection.Missing.Value;    object myunit = Word.WdUnits.wdStory;    wordApp.Selection.EndKey(ref myunit,ref mymissing);     object pBreak= (int)Word.WdBreakType.wdPageBreak;    wordApp.Selection.InsertBreak( ref pBreak );   }  }         wordDoc.SaveAs(ref filename,   ref missing,ref missing, ref missing,  ref missing,ref missing,ref missing,  ref missing,ref missing,ref missing, ref missing);            //C#操作Word表格wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);   wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);    if ( wordDoc != null )  {   System.Runtime.InteropServices.Marshal.  ReleaseComObject(wordDoc);   wordDoc = null;  }  if ( wordApp != null )  {   System.Runtime.InteropServices.Marshal.  ReleaseComObject(wordApp);   wordApp = null;  }  GC.Collect();  //KillWordProcess();  string strUrl = "MakeWordFile.aspx?username=" +Request.QueryString["username"].ToString();  utility.ShowPopMessage("文檔生成完畢!",strUrl);      }      else     {  utility.ShowPopMessage("無(wú)任何數(shù)據(jù)!");      }      #endregion            }     catch    {      wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);       wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);       if ( wordDoc != null )      {  System.Runtime.InteropServices.Marshal.  ReleaseComObject(wordDoc);  wordDoc = null;      }      if ( wordApp != null )      {  System.Runtime.InteropServices.Marshal.  ReleaseComObject(wordApp);  wordApp = null;      }      GC.Collect();      utility.ShowPopMessage("文檔生成失??!");      }    }

看完上述內(nèi)容,你們掌握C#中怎么操作Word表格的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI