您的位置:首页 > 编程语言

Office编程在dot Net环境中总结(Word生成表格报表篇)

2007-06-16 19:31 375 查看
本文的运行环境 dot FrameWork 1.1 ,Office 2003
开发环境 Vss2003 C#

前言
在 Excel中生成多个动态表格的报表是非常复杂的,因为在生成每一行数据的时候,我们都要考虑每一列由哪几个单元格组合而成。因为多个表格之间是关联的,遇到增加和删除表格的列的时候,整个报表的生成就要重新的调整。可扩展性不强。在遇到这样的报表的时候,我们可以通过Word来生成。在Word中表格与表格之间是没有关联的
本文是利用Word.Dll的动态的生成多个表格的报表。

目录
1.0 两个重要的对象Range 和Selection
2.0 生成表格
2.1 涉及到的表格的对象及相关的功能,逻辑关系。
2.2 将表格的对象的常用的功能进行重新封装。
2.3 生成表格
3.0 在.net中调用宏说明
4.0 总结

1.0两个重要的对象Range Selection
Range 和Selection 提供了一个操作范围,并提供了对这个范围的操作包含 字体样式,段落的对齐方式,边框显示的方式等等。在Word编程中大部分情况下我们都要接触和使用到这两个对象。
下面详细说明这两个对象的定义和一些常用的属性和方法。
Range
定义
该对象代表文档中的一个连续范围。每一个 Range 对象由一起始和一终止字符位置定义。我们经常先定义Range ,然后对Range中的内容进行操作。
常用的属性
Font ------- 字符格式, Range中的文字格式属性。
Bold ------- 字体或范围的格式设置为加粗格式
Borders ------- 指定对象的所有边框
ParagraphFormat -------指定区域、所选范围、查找与替换操作或样式中的段落设置

常用的方法
InsertAfter(Text)
将指定文本插入某一区域或选定内容的后面。
Select 方法
选定指定的对象。

Selection
该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。
Selection
Font ------- 字符格式, Range中的文字格式属性。
Bold ------- 字体或范围的格式设置为加粗格式
Borders ------- 指定对象的所有边框
ParagraphFormat -------指定区域、所选范围、查找与替换操作或样式中的段落设置

常用的方法
InsertAfter(Text)
将指定文本插入某一区域或选定内容的后面。
MoveRight 方法
expression.MoveRight(Unit, Count, Extend)
将所选内容向右移动,并返回移动距离的单位数。
Unit WdUnits,可选。所选内容的移动单位。
Count 所选内容移动距离的单位数。
Extend 可以是 wdMove 或 wdExtend。如果为 wdMove,则所选内容折叠到结束位置,并向右移动。如果为 wdExtend,则所选内容向右扩展。默认值是 wdMove

RangeSelection两个对象都是一个范围对象,并提供了好多同样的处理范围的方法和属性,在这里编程中我还是更多的使用Range来生成报表中的样式。

2.0 生成表格
在Word中生成表格,本质上就是在Document中生成Table对象,并对Table添加内容和样式。下面首先介绍跟生成表格有关的几个对象。

2.1涉及到的表格的对象及相关的功能,逻辑关系。



Table 该对象代表一个单独的表格。
Columns 由 Column 对象所组成的集合,该集合中的对象代表表格中的列。
Rows 由 Row 对象所组成的集合,该集合中的对象代表指定的选定部分、区域或表格中的表格行。
Column 代表单个表格列
Row 代表表格的一行。
Cell 代表单个表格单元格。

2.2 将表格的对象的常用的功能进行重新封装。
对于Office中的对象,我的处理方式是,把这些对象和常用的功能封装其来,生成C#对象
这样的话 我们直接通过对封装后生成的对象进行操作,来生成需要的Word表格。这样 一 可以并于理解和调用 二可以快速的开发
下面是封装的对象和内容
命名空间 WordReport.HLWord
HLTable 接口 定义了表格的接口 (注 HL 是我公司的名称,并于和已经定义的Table区别开来)
HLTableClass 实际的类继承了HLTable 接口
下面是定义的代码
[align=left] [/align]
[align=left]namespace WordReport.HLWord[/align]
[align=left]{[/align]
[align=left] ///<summary>[/align]
[align=left] /// HLTableClass is the Class that Contained the Functions of operate The Word's Table 's Style such as paragraph ,font ,height ,width ,et[/align]
[align=left] ///</summary>[/align]
[align=left] public class HLTableClass:HLTable[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] private Word.Table _Table=null;[/align]
[align=left] private HLRows _HLRows=null;[/align]
[align=left] public HLTableClass(Word.Table CurTable) //初始化是参数为需要操作的表格Word.Table[/align]
[align=left] {[/align]
[align=left] _Table=CurTable;[/align]
[align=left] _HLRows=new HLRowsClass(_Table.Rows);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //表格的列对象集合下面介绍 [/align]
[align=left] public HLRows HlRows[/align]
[align=left] {[/align]
[align=left] get{return _HLRows ;}[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] #region HLTable 成员[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// 获取本对象的操作的Word中的表[/align]
[align=left] ///</summary>[/align]
[align=left] ///<returns></returns>[/align]
[align=left] public Word.Table BaseTable()[/align]
[align=left] {[/align]
[align=left] return _Table;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Set The HLTable 's LineSpace[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param > the Type of HLTable's Type</param>[/align]
[align=left] ///<param >The HLTable LineSpacing </param>[/align]
[align=left] public void SetLineSpace(Word.WdLineSpacing LineSpaceType,float Size)[/align]
[align=left] {[/align]
[align=left] _Table.Range.ParagraphFormat.LineSpacingRule=LineSpaceType;[/align]
[align=left] _Table.Range.ParagraphFormat.LineSpacing =Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// set the HLTable's Paragraph 'sFont[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param ></param>[/align]
[align=left] public void SetFontSize(float Size)[/align]
[align=left] {[/align]
[align=left] _Table.Range.Font.Size=Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// set the HLTable's Paragraph 'sFont[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param ></param>[/align]
[align=left] public void SetFontBold(int Bold)[/align]
[align=left] {[/align]
[align=left] _Table.Range.Font.Bold =Bold;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// set the Table 's text Aligh and VerticalAlignment[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param >Alignment</param>[/align]
[align=left] ///<param >VerticalAlignment</param>[/align]
[align=left] public void SetPositionAlign(Word.WdParagraphAlignment Alignment, Word.WdCellVerticalAlignment VerticalAlignment)[/align]
[align=left] {[/align]
[align=left] _Table.Range.Cells.VerticalAlignment=VerticalAlignment;[/align]
[align=left] _Table.Range.ParagraphFormat.Alignment=Alignment;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// set the table 'sBorderStyle[/align]
[align=left] ///</summary>[/align]
[align=left] ///<param ></param>[/align]
[align=left] public void SetBorderStyle(Word.WdLineStyle LineStyle)[/align]
[align=left] {[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderTop].LineStyle=LineStyle;[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderLeft].LineStyle=LineStyle;[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderRight].LineStyle=LineStyle;[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderBottom].LineStyle=LineStyle;[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderHorizontal].LineStyle=LineStyle;[/align]
[align=left] _Table.Borders[Word.WdBorderType.wdBorderVertical].LineStyle=LineStyle;[/align]
[align=left] }[/align]
[align=left] //设置第 ColumnIndex 列的宽度[/align]
[align=left] public void ColumnWidth(int ColumnIndex, Word.WdPreferredWidthType WidthType, float Values)[/align]
[align=left] {[/align]
[align=left] _Table.Columns[ColumnIndex].PreferredWidthType=WidthType;[/align]
[align=left] _Table.Columns[ColumnIndex].PreferredWidth=Values;[/align]
[align=left] }[/align]
[align=left] //设置第 RowIndex 行的行高[/align]
[align=left] public void RowHeight(int RowIndex, Word.WdRowHeightRule HeightRule, float Values)[/align]
[align=left] {[/align]
[align=left] _Table.Rows[RowIndex].HeightRule=HeightRule;[/align]
[align=left] _Table.Rows[RowIndex].Height=Values;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //设置表的所有行的行高[/align]
[align=left] public void RowHeight( Word.WdRowHeightRule HeightRule, float Values)[/align]
[align=left] {[/align]
[align=left] _Table.Rows.HeightRule=HeightRule;[/align]
[align=left] _Table.Rows.Height=Values;[/align]
[align=left] }[/align]
[align=left] // 给行为RowIndex 列为ColmnIndex的单元格赋值 Values[/align]
[align=left]public void CellText(int RowIndex,int ColmnIndex, string Values)[/align]
[align=left] {[/align]
[align=left] _Table.Cell(RowIndex,ColmnIndex).Range.InsertAfter(Values);[/align]
[align=left] }[/align]
[align=left] //合并单元格 从第RowIndex行 ,第ColumnIndex列的单元格开始,合并Length个单元格[/align]
[align=left] public void MergeCell(int RowIndex,int ColumnIndex, int Lenght)[/align]
[align=left] {[/align]
[align=left] for(int index=1;index<=Lenght;index++)[/align]
[align=left] {[/align]
[align=left] _Table.Cell(RowIndex,ColumnIndex).Merge(_Table.Cell(RowIndex,ColumnIndex+1));[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //取单元格对象HLCell 后面有介绍[/align]
[align=left] public HLCell GetCell( int RowIndex,int ColumnIndex)[/align]
[align=left] {[/align]
[align=left] Word.Cell CurCell =_Table.Cell(RowIndex,ColumnIndex);[/align]
[align=left] HLCell CurHLCell=new HLCellClass(CurCell);[/align]
[align=left] return CurHLCell;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //给表格加载默认的样式 居中对齐 ,字体的设置 等等 [/align]
[align=left] public void LoadDefaultStyle()[/align]
[align=left] {[/align]
[align=left] //[/align]
[align=left] SetBorderStyle(Word.WdLineStyle.wdLineStyleSingle);[/align]
[align=left] SetFontSize(10F);[/align]
[align=left] SetPositionAlign(Word.WdParagraphAlignment.wdAlignParagraphCenter,Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter);[/align]
[align=left] SetLineSpace(Word.WdLineSpacing.wdLineSpaceExactly ,10F);[/align]
[align=left] }[/align]
[align=left] #endregion[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// the interface of HLTable ,change the Word Table 's VBA Code to the C# Code[/align]
[align=left] ///</summary>[/align]
[align=left] public interface HLTable[/align]
[align=left] {[/align]
[align=left] Word.Table BaseTable();[/align]
[align=left] [/align]
[align=left] //base Table Style[/align]
[align=left] void SetLineSpace(Word.WdLineSpacing LineSpaceType,float Size);[/align]
[align=left] void SetFontSize(float Size);[/align]
[align=left] void SetFontBold(int Bold);[/align]
[align=left] void SetPositionAlign(Word.WdParagraphAlignment Alignment,Word.WdCellVerticalAlignment VerticalAlignment);[/align]
[align=left] void SetBorderStyle(Word.WdLineStyle LineStyle);[/align]
[align=left] void ColumnWidth(int ColumnIndex,Word.WdPreferredWidthType WidthType,float Values);[/align]
[align=left] void RowHeight(int RowIndex,Word.WdRowHeightRule HeightRule,float Values);[/align]
[align=left] void RowHeight(Word.WdRowHeightRule HeightRule,float Values);[/align]
[align=left] [/align]
[align=left] //Set CellValues into table's cell[/align]
[align=left] void CellText(int RowIndex,int ColmnIndex ,string Values);[/align]
[align=left] [/align]
[align=left] //[/align]
[align=left] void MergeCell(int RowIndex,int ColumnIndex,int Lenght);[/align]
[align=left] HLCell GetCell(int RowIndex ,int ColumnIndex);[/align]
[align=left] [/align]
[align=left] HLRows HlRows{get;}[/align]
[align=left] // show default Style of table[/align]
[align=left] [/align]
[align=left] void LoadDefaultStyle();[/align]
[align=left] }[/align]
[align=left]}[/align]

这个HLTable的对象主要的功能是将Word.Table 的功能封装起来,我们可以直接调用HLTable来实现对Word.Table表格的操作,而不管具体在Word中是这么实现的

下面是HLCell对象 它的功能就像是Excel中对单元格的操作
代码
[align=left]namespace WordReport.HLWord[/align]
[align=left]{[/align]
[align=left] ///<summary>[/align]
[align=left] ///表格对象 ,封装了Word。Cell的部分主要的功能[/align]
[align=left] ///</summary>[/align]
[align=left] public class HLCellClass:HLCell[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] private Word.Cell _Cell=null;[/align]
[align=left] [/align]
[align=left] public HLCellClass(Word.Cell CurCell) //初始化是 赋值需要操作的Word.Cell对象[/align]
[align=left] {[/align]
[align=left] _Cell=CurCell;[/align]
[align=left] }[/align]
[align=left] #region HLCell 成员[/align]
[align=left] [/align]
[align=left] public Word.Cell BaseCell()[/align]
[align=left] {[/align]
[align=left] [/align]
[align=left] return _Cell;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetLineSpace(Word.WdLineSpacing LineSpaceType,float Size)[/align]
[align=left] {[/align]
[align=left] _Cell.Range.ParagraphFormat.LineSpacingRule=LineSpaceType;[/align]
[align=left] _Cell.Range.ParagraphFormat.LineSpacing=Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetFontSize(float Size)[/align]
[align=left] {[/align]
[align=left] _Cell.Range.Font.Size =Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<param ></param>[/align]
[align=left] public void SetFontBold(int Bold)[/align]
[align=left] {[/align]
[align=left] _Cell.Range.Font.Bold =Bold;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetPositionAlign(Word.WdParagraphAlignment Alignment, Word.WdCellVerticalAlignment VerticalAlignment)[/align]
[align=left] {[/align]
[align=left] _Cell.VerticalAlignment=VerticalAlignment;[/align]
[align=left] _Cell.Range.ParagraphFormat.Alignment =Alignment;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetBorderStyle(Word.WdLineStyle LineStyle,Word.WdLineWidth lineWidth)[/align]
[align=left] {[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderLeft].LineStyle=LineStyle;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderRight].LineStyle=LineStyle;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderTop].LineStyle=LineStyle;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderBottom].LineStyle=LineStyle;[/align]
[align=left] [/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderLeft].LineWidth=lineWidth;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderRight].LineWidth=lineWidth;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderTop].LineWidth=lineWidth;[/align]
[align=left] _Cell.Borders[Word.WdBorderType.wdBorderBottom].LineWidth=lineWidth;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void values(string Values)[/align]
[align=left] {[/align]
[align=left] _Cell.Range.InsertAfter(Values);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] #endregion[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// the interface of HLCell ,change the Word Cell 's VBA Code to the C# Code[/align]
[align=left] ///</summary>[/align]
[align=left] public interface HLCell[/align]
[align=left] {[/align]
[align=left] Word.Cell BaseCell();[/align]
[align=left] [/align]
[align=left] //base Table Style[/align]
[align=left] void SetLineSpace(Word.WdLineSpacing LineSpaceType,float Size);[/align]
[align=left] void SetFontSize(float Size);[/align]
[align=left] void SetFontBold(int Bold);[/align]
[align=left] void SetPositionAlign(Word.WdParagraphAlignment Alignment,Word.WdCellVerticalAlignment VerticalAlignment);[/align]
[align=left] void SetBorderStyle(Word.WdLineStyle LineStyle,Word.WdLineWidth lineWidth);[/align]
[align=left] [/align]
[align=left] //Set CellValues into table's cell[/align]
[align=left] void values(string Values);[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
下面还有 行数组对象 HLRows 和行对象HLRow ,具体的功能就不细说拉下面是代码部分。
[align=left]///<summary>[/align]
[align=left] /// HLRows 的摘要说明。[/align]
[align=left] ///</summary>[/align]
[align=left] public class HLRowsClass:HLRows[/align]
[align=left] {[/align]
[align=left] private Word.Rows _Rows=null;[/align]
[align=left] public HLRowsClass(Word.Rows CurRow)[/align]
[align=left] {[/align]
[align=left] _Rows=CurRow;[/align]
[align=left] }[/align]
[align=left] #region HLRows 成员[/align]
[align=left] public HLRow this[int i][/align]
[align=left] {[/align]
[align=left] get[/align]
[align=left] {[/align]
[align=left] return new HLRowClass(_Rows[i]);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] #endregion[/align]
[align=left] }[/align]
[align=left] public interface HLRows[/align]
[align=left] {[/align]
[align=left] HLRow this[int i]{get;}[/align]
[align=left] [/align]
}
[align=left]///<summary>[/align]
[align=left] /// HLRow 的摘要说明。[/align]
[align=left] ///</summary>[/align]
[align=left] public class HLRowClass:HLRow[/align]
[align=left] {[/align]
[align=left] private Word.Row _Row =null;[/align]
[align=left] [/align]
[align=left] public HLRowClass(Word.Row CurRow)[/align]
[align=left] {[/align]
[align=left] _Row=CurRow;[/align]
[align=left] }[/align]
[align=left] #region HLRow 成员[/align]
[align=left] [/align]
[align=left] public void SetRowHeight(Word.WdRowHeightRule HeightRule, float Values)[/align]
[align=left] {[/align]
[align=left] _Row.HeightRule =HeightRule;[/align]
[align=left] _Row.Height=Values;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetLineSpace(Word.WdLineSpacing LineSpaceType, float Size)[/align]
[align=left] {[/align]
[align=left] _Row.Range.ParagraphFormat.LineSpacingRule=LineSpaceType;[/align]
[align=left] _Row.Range.ParagraphFormat.LineSpacing=Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetFontSize(float Size)[/align]
[align=left] {[/align]
[align=left] _Row.Range.Font.Size=Size;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void SetFontBold(int Bold)[/align]
[align=left] {[/align]
[align=left] _Row.Range.Font.Bold =Bold;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] #endregion[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public interface HLRow[/align]
[align=left] {[/align]
[align=left] void SetRowHeight( Word.WdRowHeightRule HeightRule, float Values); [/align]
[align=left] void SetLineSpace(Word.WdLineSpacing LineSpaceType,float Size);[/align]
[align=left] void SetFontSize(float Size);[/align]
[align=left] void SetFontBold(int Bold);[/align]
}

2.3 生成表格
我用了个TableBuilder 类的一个方法来负责生成表格
public static HLTable CreateHLTable(DataTable DataTable_Source ,Word.Document CurDoc,Word.Range CurRange)
CurRange 生成表格的位置
CurDoc 生成表格所在的文档
DataTable_Source 表格的数据源
需要生成的样式如下:
[align=center]表名[/align]
列名1
列名2
列名3
列名4
列名5
数据一
数据一
数据一
[align=center]数据一[/align]
[align=center]数据一[/align]
数据二
[align=center]数据二[/align]
[align=center]数据二[/align]
[align=center]数据二[/align]
[align=center]数据二[/align]
[align=center]数据三[/align]
[align=center]数据三[/align]
[align=center]数据三[/align]
[align=center]数据三[/align]
[align=center]数据三[/align]
TableBuilder的代码:
[align=left] ///<summary>[/align]
[align=left] /// The Builder which Create the Table by DataTable[/align]
[align=left] ///</summary>[/align]
[align=left] public abstract class TableBuilder[/align]
[align=left] {[/align]
[align=left] private static object missing =System.Reflection.Missing.Value;[/align]
[align=left] public TableBuilder()[/align]
[align=left] {[/align]
[align=left] }[/align]
[align=left] ///<summary>[/align]
[align=left] /// Create the HLTable by the parameters DataTable_Source,CurDoc,CurRange [/align]
[align=left] ///</summary>[/align]
[align=left] ///<param ></param>[/align]
[align=left] ///<param ></param>[/align]
[align=left] ///<param ></param>[/align]
[align=left] ///<returns></returns>[/align]
[align=left] public static HLTable CreateHLTable(DataTable DataTable_Source ,Word.Document CurDoc,Word.Range CurRange)[/align]
[align=left] {[/align]
[align=left] int ColumnsNum =DataTable_Source.Columns.Count ;[/align]
[align=left] int RowsNum =DataTable_Source.Rows.Count +2;[/align]
[align=left] [/align]
[align=left] if(DataTable_Source.Rows.Count ==0)[/align]
[align=left] RowsNum=3;[/align]
[align=left] HLTable TableNew=new HLTableClass(CurDoc.Tables.Add(CurRange,RowsNum,ColumnsNum,ref missing,ref missing));[/align]
[align=left] [/align]
[align=left] // define the style of Created Table[/align]
[align=left] TableNew.LoadDefaultStyle();[/align]
[align=left] // the table Title Show[/align]
[align=left] TableNew.HlRows[1].SetRowHeight(Word.WdRowHeightRule.wdRowHeightExactly ,20F);[/align]
[align=left] TableNew.MergeCell(1,1,ColumnsNum-1);[/align]
[align=left] TableNew.GetCell(1,1).SetFontBold(1);[/align]
[align=left] TableNew.CellText(1,1,DataTable_Source.TableName);[/align]
[align=left] //the ColumnName Show[/align]
[align=left] for(int index=1;index<=ColumnsNum;index++)[/align]
[align=left] {[/align]
[align=left] TableNew.CellText(2,index,DataTable_Source.Columns[index-1].ColumnName);[/align]
[align=left] }[/align]
[align=left] TableNew.HlRows[2].SetRowHeight(Word.WdRowHeightRule.wdRowHeightExactly ,20F);[/align]
[align=left] // show the data[/align]
[align=left] [/align]
[align=left] if (DataTable_Source.Rows.Count >0)[/align]
[align=left] {[/align]
[align=left] for(int Rowindex=1;Rowindex<=DataTable_Source.Rows.Count;Rowindex++)[/align]
[align=left] {[/align]
[align=left] for(int Columnindex=1;Columnindex<=ColumnsNum;Columnindex++)[/align]
[align=left] { TableNew.CellText(Rowindex+2,Columnindex,DataTable_Source.Rows[Rowindex-1][Columnindex-1].ToString()); TableNew.HlRows[Rowindex+2].SetRowHeight(Word.WdRowHeightRule.wdRowHeightExactly ,20F);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] {[/align]
[align=left] TableNew.HlRows[3].SetRowHeight(Word.WdRowHeightRule.wdRowHeightExactly ,20F); [/align]
[align=left] }[/align]
[align=left] return TableNew;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
}

3.0 在.net中调用宏说明
在实际我们录制的宏中的方法和C#提供的接口是不一样的 如下的例子:
Selection.MoveRight Unit:=wdCharacter, Count:=1
这是在宏中的Selection 向右移一位的方法
而在C#中提供的方法是这样的
Selection.MoveRight(ref object,ref object,ref object);
怎样在C# 中调用上面的宏的方法呢

下面就是在C#的实际调用的方法
[align=left]object Start=Type.Missing ;[/align]
[align=left] object End =Type.Missing ;[/align]
[align=left] Start=Word.WdUnits.wdCharacter ;[/align]
[align=left] End=1;[/align]
Doc.ActiveWindow.Selection.MoveRight(ref Start,ref End,ref missing);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: