C#操作word文档(二)

1.C#操作Word完全功略

导入COM库:Microsoft word 11.0 Object Library.
引用里面就增加了:

创建新Word
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);
打开文档:
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:/CCCXCXX/TestDoc.doc";
oDoc = oWord.Documents.Open(ref fileName,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
导入模板
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object fileName = @"E:/XXXCCX/Test.doc";
oDoc = oWord.Documents.Add(ref fileName, ref oMissing,
ref oMissing, ref oMissing);

.添加新表
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);
.表插入行
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);

Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);
.单元格合并
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);

Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);

Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));
.单元格分离
object oMissing = System.Reflection.Missing.Value;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

object start = 0;
object end = 0;
Word.Range tableLocation = oDoc.Range(ref start, ref end);
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);

Word.Table newTable = oDoc.Tables[1];
object beforeRow = newTable.Rows[1];
newTable.Rows.Add(ref beforeRow);

Word.Cell cell = newTable.Cell(1, 1);
cell.Merge(newTable.Cell(1, 2));

object Rownum = 2;
object Columnnum = 2;
cell.Split(ref Rownum, ref Columnnum);

通过段落控制插入
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "//endofdoc"; /**//* /endofdoc is a predefined bookmark */

//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter();
2.ASP.NET(C#)将数据导出到Word或Excel

命名空间:
using System.IO;
using System.Text;
将DataGrid的数据导出到Excel
string excelname="excel文件名";
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment;filename=" + excelname + ".xls");
dr1.Page.EnableViewState = false;
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
dr1.RenderControl(tw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();

将DataGrid的数据导出到Word
string excelname="word文件名";
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-winword";
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment;filename=" + excelname + ".doc");
dr1.Page.EnableViewState = false;
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
dr1.RenderControl(tw);
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
3.c# 如何将获得的数据.导入(写入) word里
导入com库:microsoft word 11.0 object library.

将数据绑定到datagrid然后从datagrid中将数据导出代码如下:

Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=fileOut(" + System.DateTime.Now.Year+System.DateTime.Now.Month + System.DateTime.Now.Day+").doc");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-word";//设置输出文件类型为word文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataGrid1.Visible = true;
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
DataGrid1.Visible = false;
Response.End();

4.c#.net中通过关键字检索指定文件夹中的word文档

private static object nullobj = System.Reflection.Missing.Value;

// <summary>
/// search in a DOC file(查询DOC文件的内容)
/// </summary>
/// <param name="fileName"></param>
/// <param name="searchForText">要搜索的文本</param>
/// <param name="CaseSensitive">是否区分大小写</param>
/// <returns></returns>
public static bool SearchInDoc(string fileName,string searchForText,bool CaseSensitive)
{
bool Result = (searchForText.Length == 0);
object filename = fileName; //要打开的文档路径
object MissingValue=System.Reflection.Missing.Value;//Type.Missing;
object;
Microsoft.Office.Interop.Word.Application wp = null;
Microsoft.Office.Interop.Word.Document wd = null;

try
{
wp = new Microsoft.Office.Interop.Word.ApplicationClass();
wd = wp.Documents.Open(ref filename,ref MissingValue,
ref readOnly,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue);

int i=0,iCount=0;
Microsoft.Office.Interop.Word.Find wfnd;

if (wd.Paragraphs != null && wd.Paragraphs.Count>0)
{
iCount = wd.Paragraphs.Count;
for(i=1;i<=iCount;i++)
{
wfnd=wd.Paragraphs[i].Range.Find;
wfnd.ClearFormatting();
wfnd.MatchCase = CaseSensitive;
wfnd.Text = searchForText;

if (wfnd.Execute(ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue,ref MissingValue,
ref MissingValue))
{
Result = true;
break;
}
}
}
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if(wd != null)
{
wd.Close(ref nullobj,ref nullobj,ref nullobj);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wd);
wd = null;
}

if(wp != null)
{
wp.Quit(ref nullobj,ref nullobj,ref nullobj);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wp);
wp = null;
}

GC.Collect();
}

return Result;
}

5.C#也能动态生成Word文档并填充数据(1)

要使用C#操作word,首先要添加引用:

1、添加引用->COM->Microsoft Word 11.0 Object Library

2、在.cs文件中添加using Word;
下面的例子中包括C#对Word文档的创建、插入表格、设置样式等操作:

(例子中代码有些涉及数据信息部分被省略,重要是介绍一些C#操作word文档的方法)

public string CreateWordFile(string CheckedInfo)
...{
string message = "";
try
...{
Object Nothing = System.Reflection.Missing.Value;
Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
string name = "CNSI_" + DateTime.Now.ToShortString()+".doc";
object filename = "C://CNSI//" + name; //文件保存路径
//创建Word文档
Word.Application WordApp = new Word.ApplicationClass();
Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置

WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距

//移动焦点并换行
object count = 14;
object WdLine = Word.WdUnits.wdLine;//换一行;
WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
WordApp.Selection.TypeParagraph();//插入段落

6.C#也能动态生成Word文档并填充数据(2)

//文档中创建表格
Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
//设置表格样式
newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleThickThinLargeGap;
newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
newTable.Columns[1].Width = 100f;
newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width = 105f;

//填充表格内容
newTable.Cell(1, 1).Range.Text = "产品详细信息表";
newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
//合并单元格
newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

//填充表格内容
newTable.Cell(2, 1).Range.Text = "产品基本信息";
newTable.Cell(2, 1).Range.Font.Color = Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色
//合并单元格
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;

//填充表格内容
newTable.Cell(3, 1).Range.Text = "品牌名称:";
newTable.Cell(3, 2).Range.Text = BrandName;
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend = Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge();
//插入图片
string FileName = Picture;//图片所在路径
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = WordDoc.Application.Selection.Range;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度
//将图片设置为四周环绕型
Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = Word.WdWrapType.wdWrapSquare;

newTable.Cell(12, 1).Range.Text = "产品特殊属性";
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);

WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”
WordDoc.Paragraphs.Last.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;

//文件保存
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);
WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
message=name+"文档生成成功,以保存到C:CNSI下";
}
catch
{
message = "文件导出异常!";
}
return message;
}
7.C#操作Word、Excel

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Reflection;
using Word;
using Microsoft;

namespace ZHRAIMS.Logic
{
public class FillManager
{
private Dictionary<string, string> 封面 = null;
private Dictionary<string, string> 背脊 = null;

private object oMissing = System.Reflection.Missing.Value;

private object 封面模板 = System.Windows.Forms.Application.StartupPath + @"/Template/封面模板.doc";
private string 目录模板 = System.Windows.Forms.Application.StartupPath + @"/Template/目录模板.xls";
private object 脊背模板 = System.Windows.Forms.Application.StartupPath + @"/Template/脊背模板.doc";

private object 封面R = System.Windows.Forms.Application.StartupPath + @"/Temp/";
private string 目录R = System.Windows.Forms.Application.StartupPath + @"/Temp/";
private object 脊背R = System.Windows.Forms.Application.StartupPath + @"/Temp/";

public void Fill封面模板(DataTable result)
{
try
{
this.封面R += DateTime.Now.ToString("yyyyMMddHHmmssms") + ".doc";

this.封面 = new Dictionary<string, string>();

this.封面.Add("dh", result.Rows[0]["档号"].ToString().Length > 0 ? result.Rows[0]["档号"].ToString() : "");
this.封面.Add("zrdw", result.Rows[0]["编制单位"].ToString().Length > 0 ? result.Rows[0]["编制单位"].ToString() : "");
this.封面.Add("jdrq", DateTime.Parse(result.Rows[0]["建档日期"].ToString()).ToShortDateString());
this.封面.Add("bgqx", result.Rows[0]["保管期限"].ToString().Length > 0 ? result.Rows[0]["保管期限"].ToString() : "");
this.封面.Add("mj", result.Rows[0]["秘密等级"].ToString());

string ajtm1 = null;
string ajtm2 = null;

if (result.Rows[0]["案卷题名"].ToString().Length > 20)
{
ajtm1 = result.Rows[0]["案卷题名"].ToString().Substring(0, 20);

this.封面.Add("ajtm1", ajtm1);

ajtm2 = result.Rows[0]["案卷题名"].ToString().Substring(20);

this.封面.Add("ajtm2", ajtm2);
}

else
{
ajtm1 = result.Rows[0]["案卷题名"].ToString().Length > 0 ? result.Rows[0]["案卷题名"].ToString() : "";

this.封面.Add("ajtm1", ajtm1);
}


Word.ApplicationClass objWordApp = new ApplicationClass();

objWordApp.Visible = false;

Word.Document objWordDoc = objWordApp.Documents.Open(ref this.封面模板,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);

this.WordReplace(objWordApp, objWordDoc, oMissing, "dh", this.封面["dh"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "zrdw", this.封面["zrdw"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "jdrq", this.封面["jdrq"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "bgqx", this.封面["bgqx"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "mj", this.封面["mj"], false);

if (String.IsNullOrEmpty(ajtm2))
{
this.WordReplace(objWordApp, objWordDoc, oMissing, "ajtm1", this.封面["ajtm1"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "ajtm2", "", false);
}

else
{
this.WordReplace(objWordApp, objWordDoc, oMissing, "ajtm1", this.封面["ajtm1"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "ajtm2", this.封面["ajtm2"], false);
}

objWordDoc.SaveAs(ref 封面R, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);

objWordDoc.Close(ref oMissing, ref oMissing, ref oMissing);
objWordApp.Quit(ref oMissing, ref oMissing, ref oMissing);

System.Diagnostics.Process.Start(this.封面R.ToString());
}

catch (Exception objException)
{
throw objException;
}
}

public void Fill目录模板(DataTable result)
{
try
{
this.目录R += DateTime.Now.ToString("yyyyMMddHHmmssms") + ".xls";

Excel.Application objExcelApp = new Excel.Application();

objExcelApp.Visible = false;

Excel.Workbook objExcelWB = objExcelApp.Workbooks.Open(目录模板, oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing,
oMissing, oMissing);

Excel.Worksheet objExcelWS = objExcelWB.Sheets[1] as Excel.Worksheet;

for (int row = 0; row < result.Rows.Count; row++)
{
objExcelWS.Cells[row + 4, 1] = result.Rows[row]["文件顺序号"].ToString().Length > 0 ? result.Rows[row]["文件顺序号"].ToString() : "";
objExcelWS.Cells[row + 4, 2] = result.Rows[row]["文件编号"].ToString().Length > 0 ? result.Rows[row]["文件编号"].ToString() : "";
objExcelWS.Cells[row + 4, 3] = result.Rows[row]["责任人"].ToString().Length > 0 ? result.Rows[row]["责任人"].ToString() : "";
objExcelWS.Cells[row + 4, 4] = result.Rows[row]["文件题名"].ToString().Length > 0 ? result.Rows[row]["文件题名"].ToString() : "";
objExcelWS.Cells[row + 4, 5] = DateTime.Parse(result.Rows[row]["日期"].ToString()).ToShortDateString();
objExcelWS.Cells[row + 4, 6] = result.Rows[row]["页号"].ToString().Length > 0 ? result.Rows[row]["页号"].ToString() : "";
objExcelWS.Cells[row + 4, 7] = result.Rows[row]["附注"].ToString().Length > 0 ? result.Rows[row]["附注"].ToString() : "";
}

objExcelWB.SaveAs(目录R, oMissing, oMissing, oMissing,
oMissing, oMissing, Excel.XlSaveAsAccessMode.xlNoChange,
oMissing, oMissing, oMissing, oMissing, oMissing);

objExcelWB.Close(oMissing, oMissing, oMissing);
objExcelApp.Quit();

System.Diagnostics.Process.Start(this.目录R);
}

catch (Exception objException)
{
throw objException;
}
}

public void Fill脊背模板(DataTable result)
{
try
{
this.脊背R += DateTime.Now.ToString("yyyyMMddHHmmssms") + ".doc";

this.背脊 = new Dictionary<string, string>();

this.背脊.Add("dh", result.Rows[0]["档号"].ToString());
this.背脊.Add("ajtm", result.Rows[0]["案卷题名"].ToString().Length > 0 ? result.Rows[0]["案卷题名"].ToString() : "");

Word.ApplicationClass objWordApp = new ApplicationClass();

objWordApp.Visible = false;

Word.Document objWordDoc = objWordApp.Documents.Open(ref this.脊背模板,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);

this.WordReplace(objWordApp, objWordDoc, oMissing, "dh", this.背脊["dh"], false);
this.WordReplace(objWordApp, objWordDoc, oMissing, "ajtm", this.背脊["ajtm"], false);

objWordDoc.SaveAs(ref 脊背R, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);

objWordDoc.Close(ref oMissing, ref oMissing, ref oMissing);
objWordApp.Quit(ref oMissing, ref oMissing, ref oMissing);

System.Diagnostics.Process.Start(this.脊背R.ToString());
}

catch (Exception objException)
{
throw objException;
}
}

private void CheckFile(string filePath)
{
try
{
if (File.Exists(filePath))
{
File.Delete(filePath);
}
}

catch (Exception objException)
{
throw objException;
}
}

private void WordReplace(Word.ApplicationClass objWordApp, Word.Document objWordDoc, object oMissing, string findText, string replaceText, bool matchCase)
{
object FindText = findText;
object MatchCase = matchCase;
object ReplaceWith = replaceText;
object Replace = Word.WdReplace.wdReplaceAll;

objWordApp.Selection.Find.Execute(ref FindText, ref MatchCase, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref ReplaceWith, ref Replace, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
}
}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liusen5555/archive/2008/01/17/2048799.aspx

你可能感兴趣的:(word)