C#中怎么操作Word表格

发布时间:2021-07-15 11:24:52 作者:Leah
来源:亿速云 阅读:166

C#中怎么操作Word表格,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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();  //生成文档分页中的起始和终止页     string strSign = "("+strStart + "-" + strEnd + ")";      //杀掉所有word进程以保证速度     //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    {      //生成过程中屏蔽返回按扭,不允许中途停止      Button2.Enabled = false;      #region 生成文档      //设置文档宽度      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()+"明细表"+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表格之存在数据项  //添加一个表格  object missingValue = Type.Missing;   object location = strInfo.Length;   //注:若location超过已有字符的长度将会出错。一定要比"明细表"串多一个字符  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表格之设置表格样式  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 插入数据行  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"?"有":"无");      //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"?"有":"无");  #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    更新数据     #region 插入数据行      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"?"有":"无");    //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"?"有":"无");        ////******************      wordDoc.Tables.Item(k).Cell(10, 4).Range.Text =   (DT.Rows[i]["17"].ToString()=="1"?"有":"无");   #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    //插入分页   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("无任何数据!");      }      #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("文档生成失败!");      }    }

看完上述内容,你们掌握C#中怎么操作Word表格的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. Java 在Word中添加表格、嵌套表格
  2. C# 操作Word书签(二)——读取、替换Word书签

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

word

上一篇:Android中Adapter里面嵌套ListView的示例分析

下一篇:Android如何实现顶部搜索框

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》