Asp.net操作Word文档,原来这么简单啊!

时间:2023-03-08 16:28:07

引用Word对象库文件
 

具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的!

如图

Asp.net操作Word文档,原来这么简单啊!

这会自动在你的应用程序文件夹中放置一个程序集(assembly)将COM接口邦定到Word。

上传并存储word文件

上传文件时首先通过上传控件找到所需上传的文件,然后获取文件的大小,最后以流的形式写入数据库

具体代码为

C# 代码   复制
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!private void Btn_OK_Click(object sender, System.EventArgs e)
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! {
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! string name=name_TextBox.Text;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //接收上传文件
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! Stream fileStream=File1.PostedFile.InputStream;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //获取上传文件字节的大小
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! int length=File1.PostedFile.ContentLength;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! byte[] wordData=new byte[length];
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //从流中读取字节并写入wordData
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! int n=fileStream.Read(wordData,0,length);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //获取当前时间
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! DateTime time=DateTime.Now;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //连接数据库
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlConnection conn=new SqlConnection();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.ConnectionString="workstation id=TIANCHUNZHU;packet size=4096;integrated security=SSPI;data source=TIANCHUNZHU;persist security info=False;initial catalog=test";
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlCommand cmd=new SqlCommand();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.Connection=conn;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.CommandText="INSERT INTO word (fileName,postTime,fileContent) values (@fileName,@postTime,@fileContent)";
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlParameter nameParam=new SqlParameter("@fileName",System.Data.SqlDbType.VarChar,50);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! nameParam.Value=name;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.Parameters.Add(nameParam);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlParameter timeParam=new SqlParameter("@postTime",System.Data.SqlDbType.DateTime,8);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! timeParam.Value=time;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.Parameters.Add(timeParam);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!//添加word文件
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlParameter contentParam=new SqlParameter("@fileContent",System.Data.SqlDbType.Image); ①//见本段最后注解
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! contentParam.Value=wordData;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.Parameters.Add(contentParam);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.Open();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.ExecuteNonQuery();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.Close();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! }
Asp.net操作Word文档,原来这么简单啊!

说明

此处由于是Image类型文件,事先可能无法预测文件的大小,因此可不必指定size参数。如果希望控制上传文件的大小则可以输入size参数。如指定1000,则上传时最大可以上传1k的word文档。

从数据库中读取数据并恢复为word文件

读取数据时先将数据从数据库中读入缓冲区,然后再从缓冲区写入最终文件。因此首先要开辟一个缓冲区并设定它的大小,每当缓冲区读满时就要将缓冲区内的数据写入文件,以清空缓冲区并继续向缓冲区读数据,直到最后一次将缓冲区内剩余的数据全部写入文件,新的word文档即可生成。

由于这一部分用到了字节流的输入输出操作,因此要引用System.IO命名空间

代码

C# 代码   复制
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!private void Btn_get_Click(object sender, System.EventArgs e)
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!{
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!//连接数据库
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlConnection conn=new SqlConnection();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.ConnectionString="workstation id=TIANCHUNZHU;packet size=4096;integrated security=SSPI;data source=TIANCHUNZHU;persist security info=False;initial catalog=test";
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlCommand cmd=new SqlCommand();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.Connection=conn;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //根据TextBox中指定的文件名进行查找读取
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! cmd.CommandText="select fileContent from word where fileName='"+name_TextBox.Text.ToString()+"'";
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! FileStream fs;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! BinaryWriter bw;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //设定允许读取到缓冲区的最大长度
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! int buffersize=100;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //要将字节流读入的缓冲区
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! byte[] outbyte=new byte[buffersize];
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //用于记录已经读取的字节数
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! long reval;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //字段中的索引,从这里开始读取操作
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! long startIndex;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //FileStream对象将封装的文件的相对路径或绝对路径
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! string filePath=@"C:wordData.doc";
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.Open();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! SqlDataReader reader;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! reader=cmd.ExecuteReader();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! while (reader.Read())
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! {
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! fs=new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Write);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw=new BinaryWriter(fs);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! startIndex=0;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //将字节流读入outbyte缓冲区中并返回读取的字节数
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! reval=reader.GetBytes(0,startIndex,outbyte,0,buffersize);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //当读取的字节流达到缓冲区允许的最大长度时要卸载缓冲区内的数据并将数据写入文件
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! while (reval==buffersize)
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! {
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw.Write(outbyte);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw.Flush();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //重新设定开始读取的位置,并继续读取和写数据
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! startIndex+=buffersize;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! reval=reader.GetBytes(0,startIndex,outbyte,0,buffersize);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! }
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //将缓冲区内最后剩余的数据写入文件
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw.Write(outbyte,0,(int)reval-1);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw.Flush();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! bw.Close();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! fs.Close();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! }
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! reader.Close();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! conn.Close();
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!}
Asp.net操作Word文档,原来这么简单啊!

说明

此时将按照filePath中指定的路径和名称重新生成word文档。可以在filePath中根据具体情况指定生成的word文档的名称和路径。

常用生成word文档的代码

C# 代码   复制
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!public string CreateWordFile(string CheckedInfo)
Asp.net操作Word文档,原来这么简单啊!{
Asp.net操作Word文档,原来这么简单啊!string message = "";
Asp.net操作Word文档,原来这么简单啊!try
Asp.net操作Word文档,原来这么简单啊!{
Asp.net操作Word文档,原来这么简单啊!Object Nothing = System.Reflection.Missing.Value;
Asp.net操作Word文档,原来这么简单啊!Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
Asp.net操作Word文档,原来这么简单啊!string name = "CNSI.doc";
Asp.net操作Word文档,原来这么简单啊!object filename = "C://CNSI//" + name; //文件保存路径
Asp.net操作Word文档,原来这么简单啊!//创建Word文档
Asp.net操作Word文档,原来这么简单啊!Word.Application WordApp = new Word.ApplicationClass();
Asp.net操作Word文档,原来这么简单啊!Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //添加页眉
Asp.net操作Word文档,原来这么简单啊!WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
Asp.net操作Word文档,原来这么简单啊!WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
Asp.net操作Word文档,原来这么简单啊!WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐
Asp.net操作Word文档,原来这么简单啊!WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!/*WordDoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape; //设置页面为纵向
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.PageHeight = WordApp.CentimetersToPoints(21F);
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.PageWidth = WordApp.CentimetersToPoints(29.7F);
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.TopMargin = 57; //设置上边距
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.BottomMargin = 57;//设置下边距
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.LeftMargin = 57;//设置左边距
Asp.net操作Word文档,原来这么简单啊! WordDoc.PageSetup.RightMargin = 57;//设置右边距*/
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!//移动焦点并换行
Asp.net操作Word文档,原来这么简单啊!object count = 14;
Asp.net操作Word文档,原来这么简单啊!object WdLine = Word.WdUnits.wdLine;//换一行;
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.TypeParagraph();//插入段落
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!//文档中创建表格
Asp.net操作Word文档,原来这么简单啊!Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
Asp.net操作Word文档,原来这么简单啊!//设置表格样式
Asp.net操作Word文档,原来这么简单啊!newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap;
Asp.net操作Word文档,原来这么简单啊!newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
Asp.net操作Word文档,原来这么简单啊!newTable.Columns[1].Width = 100f;
Asp.net操作Word文档,原来这么简单啊!newTable.Columns[2].Width = 220f;
Asp.net操作Word文档,原来这么简单啊!newTable.Columns[3].Width = 105f;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!//填充表格内容
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(1, 1).Range.Text = "产品详细信息表";
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
Asp.net操作Word文档,原来这么简单啊!//合并单元格
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //填充表格内容
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(2, 1).Range.Text = "产品基本信息";
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(2, 1).Range.Font.Color = Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色
Asp.net操作Word文档,原来这么简单啊!//合并单元格
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //填充表格内容
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(3, 1).Range.Text = "品牌名称:";
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(3, 2).Range.Text = CheckedInfo;
Asp.net操作Word文档,原来这么简单啊!//纵向合并单元格
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(3, 3).Select();//选中一行
Asp.net操作Word文档,原来这么简单啊!object moveUnit = Word.WdUnits.wdLine;
Asp.net操作Word文档,原来这么简单啊!object moveCount = 5;
Asp.net操作Word文档,原来这么简单啊!object moveExtend = Word.WdMovementType.wdExtend;
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
Asp.net操作Word文档,原来这么简单啊!WordApp.Selection.Cells.Merge();
Asp.net操作Word文档,原来这么简单啊!//插入图片
Asp.net操作Word文档,原来这么简单啊!string FileName = @"C:\\1.jpg";//图片所在路径
Asp.net操作Word文档,原来这么简单啊!object LinkToFile = false;
Asp.net操作Word文档,原来这么简单啊!object SaveWithDocument = true;
Asp.net操作Word文档,原来这么简单啊!object Anchor = WordDoc.Application.Selection.Range;
Asp.net操作Word文档,原来这么简单啊!WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
Asp.net操作Word文档,原来这么简单啊!WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度
Asp.net操作Word文档,原来这么简单啊!WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度
Asp.net操作Word文档,原来这么简单啊!//将图片设置为四周环绕型
Asp.net操作Word文档,原来这么简单啊!Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
Asp.net操作Word文档,原来这么简单啊!s.WrapFormat.Type = Word.WdWrapType.wdWrapSquare;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(12, 1).Range.Text = "产品特殊属性";
Asp.net操作Word文档,原来这么简单啊!newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
Asp.net操作Word文档,原来这么简单啊!//在表格中增加行
Asp.net操作Word文档,原来这么简单啊!WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”
Asp.net操作Word文档,原来这么简单啊!WordDoc.Paragraphs.Last.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;
Asp.net操作Word文档,原来这么简单啊!
Asp.net操作Word文档,原来这么简单啊! //文件保存
Asp.net操作Word文档,原来这么简单啊!WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
Asp.net操作Word文档,原来这么简单啊!WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
Asp.net操作Word文档,原来这么简单啊!WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
Asp.net操作Word文档,原来这么简单啊!message = name + "文档生成成功,以保存到C:CNSI下";
Asp.net操作Word文档,原来这么简单啊!}
Asp.net操作Word文档,原来这么简单啊!catch
Asp.net操作Word文档,原来这么简单啊!{
Asp.net操作Word文档,原来这么简单啊!message = "文件导出异常!";
Asp.net操作Word文档,原来这么简单啊!}
Asp.net操作Word文档,原来这么简单啊!return message;
Asp.net操作Word文档,原来这么简单啊!}
Asp.net操作Word文档,原来这么简单啊!

有几点需要注意的地方如下:

1、在调整合并后的单元格中的内容的位置时,原先我是先向单元格中写数据,然后选中单元格,再合并单元格,最后调整水平和垂直位置。但是结果发现,不管我怎么调位置,单元格的内容始终都显示在最下方。经过一番尝试后,我发现应该先合并单元格,再往合并后的单元格中添加数据,然后选中合并后的单元格,最后设置水平位置和垂直位置。这样才可行。举例如下:

newTable.Cell(12, 1).Merge(newTable.Cell(18, 1));
newTable.Cell(12, 1).Range.Text = "范例";
newTable.Cell(12, 1).Select();
WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter; //垂直居中
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; //水平居中

2、网站发布前,Word导出正常,但发布之后就Word导出异常,则可能是权限的问题,最简单的解决办法是在<system.web></system.web>之间添加如下语句:

<identity impersonate="true" userName="你自己的账户" password="密码"/>,注意密码不能为空或者是弱密码。

 

3、如果出现如下错误:

Asp.net操作Word文档,原来这么简单啊!

"word 无法保存此文件, 因为它已在别处打开。(C:\...\STARTUP\Powerword.dot)"

Asp.net操作Word文档,原来这么简单啊!