精华内容
下载资源
问答
  • Word 2021表格简单计算和数字格式转换.docx
  • word表格排版工具是一款可以批量自动排版工具软件,适合有大量排版...其他功能如快速把word文件内的所有数字转变成带千分位的数字、对word文件内嵌的excel文件自动处理成word表格等都非常实用。 word表格排版工具截图:
  • Word应该是办公软件中使用频率最高的工具,但却一直不被很多人重视,以为它简单很容易学,但实际很多人并没有掌握其基本用法,以至于自己的工作效率一直提不高。今天分享的这些Word技巧包含了入门到精通,也许在你...

    Word应该是办公软件中使用频率最高的工具,但却一直不被很多人重视,以为它简单很容易学,但实际很多人并没有掌握其基本用法,以至于自己的工作效率一直提不高。今天分享的这些Word技巧包含了入门到精通,也许在你急需时能用上,建议收藏慢慢学哦。

    f34798b0ad155e01f5ec546419c532cc.png

    Word技巧大全

    Word谁都会用,高手和菜鸟最明显的区别就是效率,有人可以轻车熟路一小时做完好几份Word,有人加班到深夜手酸脖子疼还没做好一份,不管用什么办公软件,效率都是第一追求。

    9ebd5c1197adb432d79792e3139c57f0.png

    Word知识点

    1

    提高标书效率

    ①快速选中文字

    1、鼠标放在左侧页边距:单击可选中整行文字;双击可选中整段文字;三击可选中整篇文字(全选一般使用快捷键Ctrl+A)。

    8083e3d40549d1d7d3204c017b36f230.png

    2、按住Ctrl键再点击文字,可选中不连续的多个文字;按住Alt键再点选文字,可选中矩形区域内不同行的文字。

    5bd77578fa256109e931e69e2f8510bd.png

    3、按住Shift键再点选另外一个位置,可以选中光标间的所有文字。

    b1fe661e511b2584729ab900d516f515.png

    ②快捷使用格式刷

    众所周知,Ctrl+C是复制,Ctrl+V是粘贴。而Ctrl+Shift+C=复制格式,Ctrl+Shift+V=粘贴格式。

    fa763f5e30ba32c1b99acc6c8f0dd133.png

    如果是习惯鼠标的话,双击格式刷可以记住格式,可以连续对多段文字内容进行设置格式,按ESC键或者鼠标再点击一下格式刷,就可以解除格式刷的记忆。

    74081bad4b1cc19e43d5e4833476ee72.png

    ③快速调整文字大小

    鼠标流可以点击A进行放大缩小;键盘流点击快捷键Ctrl+【和Ctrl+】放大缩小。

    cd6fa76b36c191ff5102a8768596f2b0.png

    ④word表格函数运用

    菜单栏表格工具——布局——数据——公式,然后设置好公式和编号格式,点击确定。

    367a7f49b3890f87008f33ba1eeffa60.png

    注意:如果原始数据修改了,公式的数字是不会自动刷新的,必须手动刷新,选中公式的数字,右键——更新域,即可刷新!

    ca1af7cdec4b8238b51e2ef6b2055c88.png

    ⑤表格每页自动生成表头

    如果Word插入的表格比较长,会延长到了下一页,这时候需要在下一页插入表头。

    ➤方法:

    选中表头——表格工具——布局——数据里面的重复标题行点一下。

    23a8b9e8ce909b6340e0a3490b64f6dc.png

    ⑥如何删除表格最后多出的空行?

    有时候表格最后一行会出现空行,而且删除不了,甚至多出一页,要如何删除呢?

    ➤方法:

    菜单栏——段落设置——行距,设置为固定值、1磅。

    c9e8bc91bac67c2c62c6a7a81a8079de.png
    796a7949c2bef54f654077261aed4de8.png

    ④换页的技巧

    ➤方法:

    不需要回车,在你认为需要换页的文字或标点后,Ctrl+回车就可以直接换到第二页啦,不仅节省无数个回车,上面无论怎么变动,只要没超过一页,对下面没有任何影响!

    903b7df3b0431501ea7cba63ba538329.png

    3

    编辑排版

    标书的Word排版要求一个相对正式的结构,涉及到封面、目录、正文等部分。甚至对文档的页眉页脚页码也有严格要求。

    主要步骤有:

    ①设置标题样式

    ②自动生成目录

    ③设置页眉页脚

    ④添加文档封面

    ⑤设置标题样式

    如果希望Word可以自动根据文档的内容来生成目录,就需要把所有的文档标题设置成标题样式。

    ➤首先我们要选中Word默认样式里的标题1。在开始——样式——标题1。(其他的级别选择方式以此类推)

    ➤默认的样式如果不是你想要的,那么就在标题1那里右键——修改,然后设置你需要的文字格式。

    9d7bc848744fe2d66ad3e6b695378c87.png
    d039b5de070034a550b1f15ca2472d5d.png

    设置的标题是不含有自动编号的,如果你需要自动编号,可以设置将标题样式和自动编号进行关联,让所有设置的标题都可以自动进行编号。

    ➤设置方法:

    选中需要关联的标题——开始——多级列表——选择列表库里面第一种列表——再次点击多级列表——定义新的多级列表。多级列表的位置还记得吗?

    b76b818db3c669e20f690b76c0ba4661.png

    点开定义新的多级列表之后弹出的窗口可以设置标题样式和自动编号关联。

    在①处可以选择不同级别的数字;在②处可以设置这个编号的格式,这里支持中文;在③处可以选择编号的样式,1、2、3还是一、二、三还是A、B、C等等。

    923e362c1c24a96ee4ef4d76cefd19d3.png

    最后一步很重要,不要着急点确定,点左下角的更多。然后选择将级别链接到样式,然后在①处对1级编号链接到标题1,2级编号链接到标题2,以此类推。

    3c468b00eea3fc806ca140f679ef3d34.png

    ②自动生成目录

    设置好了标题样式,自动生成目录就会非常方便,点击菜单栏的引用——目录——自动目录,就可以生成了

    5d90de1af082cd5322d30de67ff19706.png

    如果内容调整了,需要更新目录,只需要点击一下目录边上的更新按钮即可。

    d12f8dc85114967060bdb4d1cd754c9b.png

    目录生成以后,我们需要让目录和正文真正的分隔开,这里如果用分页符就错啦,分页符只能换页,但是无法从本质上把目录和正文隔开,会对后面工作造成不便。所以我们要用分节符。

    ➤方法:

    先将光标放在目录的最后,点击菜单栏页面布局——分隔符——分节符——下一页。

    c0a1583595f9cf85dfd9fe76102db795.png

    ③设置页眉页脚

    先设置页眉页脚

    ➤方法:菜单栏插入——页眉/页脚——选择合适的奇数页页眉/页脚

    5fd1d5125fd71a2f791737bcf88d870a.png

    ➤选好之后,如果想要奇数页页眉和偶数页页眉不同,双击进入页眉/页脚,勾选奇偶页不同,然后再将文档下拉到偶数页,再编辑偶数页的页眉页脚。

    2c7b87d9524a2d9b892dd680679fe8fa.png

    接下来看设置页码

    ➤双击进入正文第一页的页眉/页脚,如果前面设置目录的时候插入了分节符,我们就要点击取消“链接到前一条页眉”

    1dd9c95a4abdfc4cf5822b7d2bfe3e93.png

    ➤然后点击页码下拉条——设置页码格式,起始页码设置为1。

    8bfe21122b6fc1d77e776bdb1586e726.png

    ④添加文档封面

    ➤方法:菜单栏插入——封面——选择合适的封面

    853c29cd48ee3aafd1f5982a61104e37.png

    如果需要打印,我们需要在封面后面插入一个空白页当作封二,避免装订的时候目录页直接装订在封面背后。

    4

    多人协作

    ①批注

    批注不修改内容,只写评语

    首先我们选中要批注的段落(或段落里的某句话、某个词),然后在菜单栏审阅——新建/删除批注,就可以写评语。选择文字后,右击下拉菜单和使用快捷键也有。

    1be269b478c036b7805ae7d7029362db.png

    ②修订

    修订可以对文档进行修改,如果你想直接对文章内容进行修改,在审阅里面点击修订,这样你在文档里面做的修改都会被记录下来。

    ff0ca8d55bc0d34983fb8eaaf26b6dc2.png

    如果你要给你的领导或者下属展示你修订的文章,可以在不关闭修订的情况下直接保存,这样他们会直接看到你的修订内容。

    ③领导没开修订就改了?

    总有一次,你的老板没有开修订,或者恶意的关了你的修订悄悄把文档给改了,这个时候,就需要使用另一个小技巧:比较。

    打开审阅——比较——比较文档——设置原文档和新文档,然后Word就会自动比较并用修订功能标出所有的不同。

    dac61ce155a9b803e777666fd215b1c0.png

    当然写到这里,这篇实用的Word技巧长文就告一段落,相信掌握这些Word技巧,你也就成高手了。

    附上word技巧问答

    1.问:如何将word文档里的繁体字改为简化字?

    答:工具―语言―中文简繁转换。

    2.问:怎样微调WORD表格线?WORD表格上下竖线不能对齐,用鼠标拖动其中一条线,可是一拖就跑老远,想微调表格竖线让上下对齐,请问该怎么办?

    答:选定上下两个单元格,然后指定其宽度就可以对齐了,再怎么拉都行press"Alt",打开绘图,其中有个调整坐标线,单击,将其中水平间距与垂直间距都调到最小值即可。打开绘图,然后在左下脚的绘图网格里设置,把水平和垂直间距设置得最小。

    3.问:怎样微调word表格线?我的word表格上下竖线不能对齐,用鼠标拖动其中一条线,可是一拖就跑老远,我想微调表格竖线让上下对齐,请问该怎么办?

    答:可以如下操作:

    ●按住ctl键还是shift,你haveatry

    ●doubleclicktheline,tryit:)

    ●打开绘图,设置一下网格(在左下角)。使水平和垂直都为最小,试一把!?

    ●press"Alt"

    4.问:怎么把word文档里已经有的分页符去掉?

    答:先在工具――>选项――>视图――>格式标记,选中全部,然后就能够看到分页符,delete就ok了。

    5.问:Word中下标的大小可以改的吗?

    答:格式―字体

    6.问:Word里怎么自动生成目录啊

    答:用“格式>>样式和格式”编辑文章中的小标题,然后插入->索引和目录

    7.问:Word的文档结构图能否整个复制?论文要写目录了,不想再照着文档结构图输入一遍,有办法复制粘贴过来吗?

    答:可以自动生成的,插入索引目录。

    8.问:做目录的时候有什么办法时右边的页码对齐?比如:1.1标题..........11.2标题...............2

    答:画表格,然后把页码都放到一个格子里靠右或居中,然后让表格的线条消隐就可以了,打印出来就很整齐。

    9.问:怎样在word中将所有大写字母转为小写?比如一句全大写的转为全小写的

    答:格式->更改大小写->小写

    10.问:在存盘的时候,出现了问题,症状如下:磁盘已满或打开文件过多,不能保存,另开新窗口重存也不管用。如何解决?

    答:把word文档全选,然后复制,然后关掉word,电脑提示你粘贴板上有东西,要不要用于别的程序,选是,然后,再重新打开word,然后粘贴,然后,保存。

    展开全文
  • 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明...
  • Word表格之VBA知识

    千次阅读 多人点赞 2019-01-28 13:56:10
    Table对象(因为是对象,...下面是Table的常用方法(注意是部分,不是全部,只例出重要的方法,下面的属性皆如此,如果详细面全部的了解,请看Word VBA自带的帮助。VBAWD10.chm) 使用Table对象 可使用 Tables(...

    Table对象(因为是对象,所以用Set赋值)

    该对象代表一个单独的表格。Table 对象是Tables集合的一个成员。Tables集合包含了指定的选定内容范围文档中的所有表格

    下面是Table的常用方法(注意是部分,不是全部,只例出重要的方法,下面的属性皆如此,如果详细面全部的了解,请看Word VBA自带的帮助。VBAWD10.chm)

    使用Table对象

    可使用 Tables(index) 返回一个 Table 对象,其中 index 为索引号。索引号代表选定内容、范围或文档中表格的位置。下例将活动文档中的第一个表格转换为文本。

    ActiveDocument.Tables(1).ConvertToText Separator:=wdSeparateByTabs

    使用Add方法可以在指定范围内新增一表格。下例在活动文档的起始处添加一 3 x 4 表格。

    Set myRange = ActiveDocument.Range(Start:=0, End:=0)

    ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4

    Cell 方法

    返回一个 Cell 对象,该对象代表表格中的一个单元格

    expression.Cell(Row, Column)

    expression      必需。该表达式返回一个Table对象。

    Row   Long 类型,必需。指返回的表格行数。可以是介于 1 和表格行数之间的任意整数。

    Column    Long 类型,必需。指返回的表格单元格数目。可以是介于 1 和表格列数之间的任意整数。

    示例

    本示例在新文档中创建一个 3x3 表格,并在表格的第一个和最后一个单元格中插入文本。

    Dim docNew As Document

    Dim tableNew As Table

    Set docNew = Documents.Add

    Set tableNew = docNew.Tables.Add(Selection.Range, 3, 3)

    With tableNew

        .Cell(1,1).Range.InsertAfter "First cell"

        .Cell(tableNew.Rows.Count, _

            tableNew.Columns.Count).Range.InsertAfter "Last Cell"

    End With

    本示例删除活动文档的第一个表格中的第一个单元格的内容。

    If ActiveDocument.Tables.Count >= 1 Then

        ActiveDocument.Tables(1).Cell(1, 1).Delete

    End If

    Split 方法

    在表格中紧靠指定行的上面插入一空段落,并且返回一个 Table 对象,此对象包含指定行及其下一行。(简单的的理解:就是指向拆分后的下面的表格,不清楚也没关系,看下面的例子。)

    expression.Split(BeforeRow)

    expression      必需。该表达式返回一个 Table 对象。

    BeforeRow     Variant 类型,必需。将要拆分的表格的前一行。可以为 Row 对象或行号。

    本示例在活动文档(应试是新建文档)中创建一张 5x5 的表格,并且在第三行之前进行拆分。然后为结果表格(新的 3x5 表格)的单元格添加底纹。

    Set newDoc = Documents.Add

    Set myTable = ActiveDocument.Tables.Add(Range:=Selection.Range, _

        NumColumns:=5, NumRows:=5)

    myTable.Split(BeforeRow:=myTable.Rows(3)).Shading _

        .Texture = wdTexture10Percent

    Table属性

    Range 属性

    本示例复制表格 1 中的首行。

     

    If ActiveDocument.Tables.Count >= 1 Then _

        ActiveDocument.Tables(1).Rows(1).Range.Copy

    End if

    Borders 属性

    该属性返回一个 Borders 集合,该集合代表指定对象的所有边框。

    expression.Borders

    expression      必需。该表达式返回“应用于”列表中的一个对象。

    示例

    本示例对活动文档中的第一个表格应用内部和外部边框。

    Set myTable = ActiveDocument.Tables(1)

    With myTable.Borders

        .InsideLineStyle = wdLineStyleSingle

        .OutsideLineStyle = wdLineStyleDouble

    End With

    Columns 属性

    返回一个 Columns 集合,该集合代表在某一区域、所选内容或表格中所有表格列。只读

    示例

    本示例显示活动文档的第一个表格中的列数。

    If ActiveDocument.Tables.Count >= 1 Then

        MsgBox ActiveDocument.Tables(1).Columns.Count

    End If

    本示例将当前列的宽度设置为 1 英寸。

    If Selection.Information(wdWithInTable) = True Then

        Selection.Columns.SetWidth ColumnWidth:=InchesToPoints(1), _

            RulerStyle:=wdAdjustProportional

    End If

    Rows 属性

    该属性返回一个 Rows 集合,该集合代表某个范围、所选部分或表格中所有的表格行。只读。

    本示例删除活动文档第一个表格的第二行。

    ActiveDocument.Tables(1).Rows(2).Delete

    本示例为插入点所在行的各单元格设置边框。

    Selection.Collapse Direction:=wdCollapseStart

    If Selection.Information(wdWithInTable) = True Then

        Selection.Rows(1).Borders.OutsideLineStyle =  wdLineStyleSingle

    Else

        MsgBox "The insertion point is not in a table."

    End If

    Column 对象

    代表单个表格列。Column 对象是 Columns 集合的一个元素。Columns 集合包括某一表格、选定内容或区域中的所有列。

    使用 Column 对象

    使用 Columns(index) 可返回单独的 Column 对象,其中 index 为索引序号。索引序号代表该列在 Columns 集合中的位置(从左至右计算)

    下列示例选定活动文档中的表格 1 的第一列。

    ActiveDocument.Tables(1).Columns(1).Select

    用 Cell 对象的 Column 属性可返回一个 Column 对象。下列示例删除单元格 1 中的文字,插入新文字,然后对该列进行排序。

    With ActiveDocument.Tables(1).Cell(1, 1)

        .Range.Delete

        .Range.InsertBefore "Sales"

        .Column.Sort

    End With

    用 Add 方法可在表格中添加一列。下列示例为活动文档的第一张表格中添加一列,然后将列宽设置为相等。

    If ActiveDocument.Tables.Count >= 1 Then

        Set myTable = ActiveDocument.Tables(1)

        myTable.Columns.Add BeforeColumn:=myTable.Columns(1)

        myTable.Columns.DistributeWidth

    End If

    说明

    用 Selection 对象的 Information 属性可返回当前列号。下列示例选定当前列并在消息框中显示其列号。

    If Selection.Information(wdWithInTable) = True Then

        Selection.Columns(1).Select

        MsgBox "Column " _

            & Selection.Information(wdStartOfRangeColumnNumber)

    End If

    Cell 对象

    代表单个表格单元格。Cell 对象是 Cells 集合中的元素。Cells 集合代表指定对象中所有的单元格。

    使用 Cell 对象

    用 Cell(row, column) 或 Cells(index)可返回 Cell 对象,其中 row 为行号,column 为列号,index 为索引序号。下列示例给第一行的第二个单元格加底纹。

    Set myCell = ActiveDocument.Tables(1).Cell(Row:=1, Column:=2)

    myCell.Shading.Texture = wdTexture20Percent

    下列示例给第一行的第一个单元格加底纹。

    ActiveDocument.Tables(1).Rows(1).Cells(1).Shading _

        .Texture = wdTexture20Percent

    用 Add 方法可在 Cells 集合中添加 Cell 对象。也可用 Selection 对象的 InsertCells 方法插入新单元格。下列示例在 myTable 的第一个单元格之前插入一个单元格。

    Set myTable = ActiveDocument.Tables(1)

    myTable.Range.Cells.Add BeforeCell:=myTable.Cell(1, 1)

    本示例将第一个表格的头两个单元格设定为一个域 (myRange)。区域设定之后,用 Merge 方法合并两个单元格。

    Set myTable = ActiveDocument.Tables(1)

    Set myRange = ActiveDocument.Range(myTable.Cell(1, 1) _

        .Range.Start, myTable.Cell(1, 2).Range.End)

    myRange.Cells.Merge

    说明

    使用带 Rows 或 Columns 集合的 Add 方法添加一行或一列单元格。

    使用 Selection 对象的 Information 属性返回当前行号和列号。下面的示例改变选中部分第一个单元格的宽度,再显示单元格的行号和列号。

    If Selection.Information(wdWithInTable) = True Then

        With Selection

            .Cells(1).Width = 22

            MsgBox "Cell " & .Information(wdStartOfRangeRowNumber) _

                & "," & .Information(wdStartOfRangeColumnNumber)

        End With

    End If

    Row 对象

    代表表格的一行。Row 对象是 Rows 集合中的一个元素。Rows 集合包括指定部分、区域或表格中的所有行。

    使用 Row 对象

    用 Rows(index) 可返回单独的 Row 对象,其中 index 为索引序号。索引序号代表该行在选定部分、区域或表格中的位置。下列示例删除活动文档中第一张表格的首行。

    ActiveDocument.Tables(1).Rows(1).Delete

    用 Add 方法可在表格中添加行。下列示例在选定部分首行前插入一行。

    If Selection.Information(wdWithInTable) = True Then

        Selection.Rows.Add BeforeRow:=Selection.Rows(1)

    End If

    说明

    用 Cells 属性可修改 Row 对象中的单个单元格。下列示例在选定部分中添加一张表格,并在表格第二行的各单元格内插入数字。

    Selection.Collapse Direction:=wdCollapseEnd

    If Selection.Information(wdWithInTable) = False Then

        Set myTable = _

            ActiveDocument.Tables.Add(Range:=Selection.Range, _

            NumRows:=3, NumColumns:=5)

        For Each aCell In myTable.Rows(2).Cells

            i = i + 1

            aCell.Range.Text = i

        Next aCell

    End If

    访问表格行或列时产生的错误

    如果要访问绘制表格中单独的行或列,而该表格又不统一,则会产生一个运行时错误。例如,如果活动文档中第一张表格的每列中具有不同数量的行,则使用下列指令将导致出错。

    Sub RemoveTableBorders()

        ActiveDocument.Tables(1).Rows(1).Borders.Enable = False

    End Sub

    要避免这种错误可首先使用 SelectColumn  SelectRow 方法选定一列或一行中的单元格。选定单元格后,再使用 Selection 对象的 Cells 属性。下列示例选定第一张文档表格中的第一行。Cells 属性用于访问选定的单元格(第一行中的所有单元格)以删除边框。

    Sub RemoveTableBorders()

        ActiveDocument.Tables(1).Cell(1, 1).Select

        With Selection

            .SelectRow

            .Cells.Borders.Enable = False

        End With

    End Sub

    下列示例选定第一张文档表格的第一列。For Each...Next 循环语句用于在所选内容(第一列中的所有单元格)的每个单元格中添加文字。

    Sub AddTextToTableCells()

        Dim intCell As Integer

        Dim oCell As Cell

        ActiveDocument.Tables(1).Cell(1, 1).Select

        Selection.SelectColumn

        intCell = 1

        For Each oCell In Selection.Cells

            oCell.Range.Text = "Cell " & intCell

            intCell = intCell + 1

        Next oCell

    End Sub

    处理表格

    创建一张表格,插入文字,并应用格式

    下列示例在活动文档的开头插入一张 4 列 3 行的表格。For Each...Next 结构用于循环遍历表格中的每个单元格。在 For Each...Next 结构中,InsertAfter 方法用于将文字添至表格单元格(单元格 1、单元格 2、以此类推)。

    Sub CreateNewTable()

        Dim docActive As Document

        Dim tblNew As Table

        Dim celTable As Cell

        Dim intCount As Integer

        Set docActive = ActiveDocument

        Set tblNew = docActive.Tables.Add( _

            Range:=docActive.Range(Start:=0, End:=0), NumRows:=3, _

            NumColumns:=4)

        intCount = 1

        For Each celTable In tblNew.Range.Cells

            celTable.Range.InsertAfter "Cell " & intCount

            intCount = intCount + 1

        Next celTable

        tblNew.AutoFormat Format:=wdTableFormatColorful2, _

            ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True

    End Sub

    在表格单元格中插入文字

    下列示例在活动文档中第一张表格的第一个单元格中插入文字。Cell 方法返回单独的 Cell 对象。Range 属性返回一个 Range 对象。Delete 方法用于删除现有的文字,而 InsertAfter 方法用于插入文字“Cell 1,1”。

    Sub InsertTextInCell()

        If ActiveDocument.Tables.Count >= 1 Then

            With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range

                .Delete

                .InsertAfter Text:="Cell 1,1"

               ' .text="cell 1,1" 上面两行,可以用这一行表示。

            End With

        End If

    End Sub

    返回表格单元格中的文字,不包括表格结束单元格标记

    下列示例返回并显示文档中第一张表格的第一行中每个单元格的内容。

    Sub ReturnTableText()

        Dim tblOne As Table

        Dim celTable As Cell

        Dim rngTable As Range

        Set tblOne = ActiveDocument.Tables(1)

        For Each celTable In tblOne.Rows(1).Cells

            Set rngTable = ActiveDocument.Range(Start:=celTable.Range.Start, _

                End:=celTable.Range.End - 1)         '注意这里用了-1

            MsgBox rngTable.Text

        Next celTable

    End Sub

     

    Sub ReturnCellText()

        Dim tblOne As Table

        Dim celTable As Cell

        Dim rngTable As Range

        Set tblOne = ActiveDocument.Tables(1)

        For Each celTable In tblOne.Rows(1).Cells

            Set rngTable = celTable.Range

            rngTable.MoveEnd Unit:=wdCharacter, Count:=-1

            MsgBox rngTable.Text

        Next celTable

    End Sub

     

    将文本转换为表格

    下列示例在活动文档的开头插入用制表符分隔的文本,然后将这些文本转换为表格。

    Sub ConvertExistingText()

        With Documents.Add.Content

            .InsertBefore "one" & vbTab & "two" & vbTab & "three" & vbCr

            .ConvertToTable Separator:=Chr(9), NumRows:=1, NumColumns:=3

        End With

    End Sub

     

    返回每个表格单元格的内容

    下列示例定义一个数组,该数组的元素个数等于文档中第一张表格(假定为 Option Base 1)中的单元格数。For Each...Next 结构用于返回每个表格单元格的内容,并将文字指定给相应的数组元素。

    Sub ReturnCellContentsToArray()

        Dim intCells As Integer

        Dim celTable As Cell

        Dim strCells() As String

        Dim intCount As Integer

        Dim rngText As Range

        If ActiveDocument.Tables.Count >= 1 Then

            With ActiveDocument.Tables(1).Range

                intCells = .Cells.Count

                ReDim strCells(intCells)

                intCount = 1

                For Each celTable In .Cells

                    Set rngText = celTable.Range

                    rngText.MoveEnd Unit:=wdCharacter, Count:=-1

                    strCells(intCount) = rngText

                    intCount = intCount + 1

                Next celTable

            End With

        End If

    End Sub

    (测试环境.docVBA中有更好的方法,可以参考)

    将活动文档中的所有表格复制到新文档中

    本示例将当前文档中的表格复制到新文档中。

    Sub CopyTablesToNewDoc()

        Dim docOld As Document

        Dim rngDoc As Range

        Dim tblDoc As Table

        If ActiveDocument.Tables.Count >= 1 Then

            Set docOld = ActiveDocument

            Set rngDoc = Documents.Add.Range(Start:=0, End:=0)

            For Each tblDoc In docOld.Tables

                tblDoc.Range.Copy

                With rngDoc

                    .Paste

                    .Collapse Direction:=wdCollapseEnd

                    .InsertParagraphAfter

                    .Collapse Direction:=wdCollapseEnd

                End With

            Next

        End If

    End Sub

     

    以下为我对表格的认识:(陋见)

    在“测试环境.doc”中有不少的例子(在VBA中),也有解释,

    两个文档花了我8小时以上(即一个工作日以上)

    关于表格在VBA中的相关说明:

    1.         如下图,类似于回车 在VBA中也是chr(13),竖线就是chr(7),怎么知道的?

    2.         当然是看老大们知道的。不过。在“测试环境.doc”中有相关的宏能得到这些数字。这也是授之以渔吧。

    3.         重点推荐“测试环境.doc的相关代码用了我不少功夫,慢慢体会。不懂的可以提出来。

     

    Ch(13)

    Ch(7)

     

    4.         因为chr(13)为段落标记,所以在VBA中,ActiveDocument.Paragraphs.Count测得的段落数与工具、字数统计是不一样的。

    5.         如果这样统计:表格中单元格中类似的 且不为空就为一个段落,否则不算。这就与工工具、字数统计的段落数一样了。

    6.         如果要新建一个表格,再添加一些字符(包括数字)的话,更好的方法是:先字符写入文档中(当然,要加一些标记,以便确定单元格),再利用Word的表格、转换、文字转换为表格。这样,速度快一些。有以下的代码为证。

    Sub 表格5()

    '先放到文档,再放入表格

    Dim i%, astring As String

    Dim adoc As Document

    Dim atime As Long

    Application.ScreenUpdating = False '关闭屏幕更新

    atime = Timer '设atime为正前时间

    For i = 1 To 1000

        astring = astring & i & Chr(13)

    Next

        Set adoc = Documents.Add

            adoc.Content = astring

            adoc.Range.ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=10, _

            NumRows:=100

    Application.ScreenUpdating = True

        MsgBox "先放到文档的运行时间为:" & Timer - atime

        '1.28,1.07,1.03

    End Sub

    Sub 表格6()

    '先生成表格,再向单元格中添数

    Dim i%, astring As String

    Dim adoc As Document

    Dim atime As Long

    Dim atable As Table

    Application.ScreenUpdating = False '关闭屏幕更新

    atime = Timer '设atime为正前时间

    Set adoc = Documents.Add

    Set atable = adoc.Tables.Add(Selection.Range, 100, 10)

    With atable.Range

        For i = 1 To 1000

            .Cells(i).Range.Text = i

        Next

    End With

    Application.ScreenUpdating = True

        MsgBox "先放到文档的运行时间为:" & Timer - atime

        '16.3,15.53,15.35

    End Sub

    '几乎是15倍的差别,谁快谁慢应该大家知道了。还顺带说一话:有的软件在操作Word的表格时,就是用类似于“表格6”的方法,而且也没有用Appplication.ScreenUpdating=true。所以,看上去就像在看动画片。(例如:“青山预算之星”的“输出到Word”就是)看来,国产软件还需努力。

    7.         有些尤意末尽的,大家慢慢在程序中体会。

    8.         特别强调:微软本身的许多功能,不是一般的VBA的程序,比VBA要快很多,不明白内部是用什么语言或什么原理在工作。例如:a.邮件合并,速度奇快。如果你试着用VBA来做,速度奇慢。b.修订功能;c.工具、宏、命令listcommands的运行速度。
    等等,都是我们VBA一族所不能及的。(不过来,如果我们的VBA与微软快,微软不PK我们才怪。呵呵,阿Q精神一下,找一下心理平衡。

    展开全文
  • vb操作word数字编号

    2018-12-17 20:06:12
    关于vb操作word文档中数字编号有关知识 ListGallery 对象 (Word) 代表单个列表格式的库。 ListGallery对象是ListGalleries集合的成员。 使用ListGalleries (Index),其中 Index 是wdBulletGallery 、 ...
  • C++操作word文档,向word中传入内容并控制格式输出

    想要控制word文档,向word写入文字,图片,表格等并控制其格式,可以引入第三方库,#include "msword.h",网上的资料很多,在此不再赘述。下面封装好的代码,生气,很简单,可以直接调用:


    // WordHandle.h: interface for the WordHandle class.
    //
    //
    
    #if !defined(AFX_WORDHANDLE_H__7F5096E5_F09B_4DA1_9FC2_28FA2D2C1573__INCLUDED_)
    #define AFX_WORDHANDLE_H__7F5096E5_F09B_4DA1_9FC2_28FA2D2C1573__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    
    //段落对齐方式
    enum wdAlignParagraphAlignment {
    	wdAlignParagraphLeft = 0, //左对齐
    	wdAlignParagraphCenter = 1, //居中
    	wdAlignParagraphRight = 2, //右对齐
    	wdAlignParagraphJustify = 3 //两端对齐
    }; 
    
    //单元格垂直对齐方式
    enum WdCellVerticalAlignment{
    	wdCellAlignVerticalTop = 0, //文字与单元格上框线对齐
    	wdCellAlignVerticalCenter = 1, //文字与单元格中心对齐
    	wdCellAlignVerticalBottom = 3 //文字与单元格底边框线对齐
    };
    
    #include "msword.h"
    #include  <atlbase.h>
    #include "comdef.h"
    #include <afxdisp.h> //COlVirant 
    
    
    class WordHandle  
    {
    private:
    	_Application wordapp;
    	COleVariant vTrue, vFalse, vOptional;
    	Documents worddocs;
    	CComVariant tpl, Visble, DocType, NewTemplate;
    	Selection wordsel;
    	_Document worddoc;
    	Tables wordtables;
    	Table wordtable;
    	_ParagraphFormat paragraphformat;
    	Cell cell;
    	Cells cells;
    	_Font wordFt;
    	Range range;
    	CComVariant SaveChanges,OriginalFormat,RouteDocument;
    	CComVariant ComVariantTrue,ComVariantFalse;
    	InlineShapes ishaps;
    	InlineShape ishap;
    
    	
    public:
    	void AddPicture(LPCTSTR picname);
    	void AddTime(CTime time);
    	void CreateChart();
    	BOOL MergeCell(int  cell1row,int cell1col,int  cell2row,int cell2col);
    	void CloseWordSave(LPCTSTR wordname);  
    	void CloseWord();
    	void SetTableFormat(int nRow, int nColumn, long horizontalAlignment, long verticalAlignment);
    	void SetTableFormat(int beginRow, int beginColumn, int endRow, int endColumn, long horizontalAlignment = wdAlignParagraphCenter, long verticalAlignment = 
    
    wdCellAlignVerticalCenter);
    	void SetTablePadding(float topPadding = 4.0, float bottomPadding = 4.0, float leftPadding = 4.0, float rightPadding = 4.0);
    	void SetTableFont(int nRow, int nColumn, BOOL bBold, BOOL bItalic = FALSE, BOOL bUnderLine = FALSE);
    	void SetTableFont(int nRow, int nColumn, LPCTSTR szFontName = "宋体", float fSize=9, long lFontColor=0, long lBackColor = 0);
    	void SetTableFont(int beginRow, int beginColumn, int endRow, int endColumn, LPCTSTR szFontName = "宋体", float fSize=9, long lFontColor=0, long lBackColor = 
    
    0);
    	void SetFont(BOOL bBold, BOOL bItalic = FALSE, BOOL bUnderLine = FALSE );
    	void SetFont(LPCTSTR szFontName ,float fSize = 9, long lFontColor = 0, long lBackColor=0);
    	void AddParagraph();
    	void WriteText(LPCTSTR szText);
    	BOOL CreateWord();
    	void ShowWord(BOOL show);
    	void WriteCell(int nRow, int nColumne, LPCTSTR szText);
    	void WriteCell(int nRow, int nColumne, LPCTSTR lpszFormat, float num);
    	BOOL CreateTable(int nRow, int nColumn);
    	void SetParagraphFormat(int nAlignment);
    	BOOL CreateDocumtent();
    	BOOL CreateApp();
    	WordHandle();
    	virtual ~WordHandle();
    
    };
    
    #endif // !defined(AFX_WORDHANDLE_H__7F5096E5_F09B_4DA1_9FC2_28FA2D2C1573__INCLUDED_)
    


    下面是实现文件:


    // WordHandle.cpp: implementation of the WordHandle class.
    //
    //
    
    #include "stdafx.h"
    #include "WordHandle.h"
    
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
    
    //
    // Construction/Destruction
    //
    
    WordHandle::WordHandle(){
    	OleInitialize(NULL);    
    	//CoInitialize(NULL);
    	ComVariantTrue=CComVariant(true);
    	ComVariantFalse=CComVariant(false);
    	vTrue=COleVariant((short)TRUE);
    	vFalse=COleVariant ((short)FALSE);
    	tpl=CComVariant(_T(""));
    	DocType=CComVariant(0);
    	NewTemplate=CComVariant(false);
    	vOptional=COleVariant((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    
    }
    
    WordHandle::~WordHandle(){
    	wordtable.ReleaseDispatch();
    	wordtables.ReleaseDispatch();
    	wordsel.ReleaseDispatch();
    	worddocs.ReleaseDispatch();
    	worddoc.ReleaseDispatch();
    	paragraphformat.ReleaseDispatch();
    	wordapp.ReleaseDispatch();
    	wordFt.ReleaseDispatch();
    	cell.ReleaseDispatch();
    	range.ReleaseDispatch();
    	ishaps.ReleaseDispatch();
    	ishap.ReleaseDispatch();
    	CoUninitialize();
    }
    
    BOOL WordHandle::CreateApp(){
    	if (FALSE == wordapp.CreateDispatch("Word.Application"))	{
    		MessageBox(NULL,"Application创建失败!","", MB_OK|MB_ICONWARNING);
    		return FALSE;
    	}
    	//    m_wdApp.SetVisible(TRUE);
    	return TRUE;
    
    }
    
    BOOL WordHandle::CreateDocumtent(){
    	if (!wordapp.m_lpDispatch){
           MessageBox(NULL,"Application为空,Documents创建失败!", "错误提示",MB_OK|MB_ICONWARNING);
           return FALSE;
       }
       worddocs.AttachDispatch(wordapp.GetDocuments());
       if (!worddocs.m_lpDispatch){
           MessageBox(NULL,"Documents创建失败!", "错误提示",MB_OK|MB_ICONWARNING);
           return FALSE;
       }
       CComVariant Template(_T(""));    
       CComVariant NewTemplate(false),DocumentType(0),Visible;
       worddocs.Add(&Template,&NewTemplate,&DocumentType,&Visible);    
    
       worddocs = wordapp.GetActiveDocument();
       if (!worddocs.m_lpDispatch){
           MessageBox(NULL,"Document获取失败!", "",MB_OK|MB_ICONWARNING);
           return FALSE;
       }
       wordsel = wordapp.GetSelection();
       if (!wordsel.m_lpDispatch){
           MessageBox(NULL,"Select获取失败!", "",MB_OK|MB_ICONWARNING);
           return FALSE;
       }    
       return TRUE;
    
    }
    
    void WordHandle::SetParagraphFormat(int nAlignment)
    {
    	if (!wordsel.m_lpDispatch){
    		return ;
    	}
    	paragraphformat = wordsel.GetParagraphFormat();
    	paragraphformat.SetAlignment(nAlignment);
    	wordsel.SetParagraphFormat(paragraphformat);
    }
    
    BOOL WordHandle::CreateTable(int nRow, int nColumn){
    	if (!wordapp.m_lpDispatch){
    		return FALSE;
    	}
    
    	worddoc = wordapp.GetActiveDocument();
    	wordtables = worddoc.GetTables();
    	VARIANT vtDefault, vtAuto;
    	vtDefault.vt = VT_I4;
    	vtAuto.vt = VT_I4;
    	vtDefault.intVal = 1;
    	vtAuto.intVal = 0;
    	wordtables.Add(wordsel.GetRange(), nRow, nColumn, &vtDefault, &vtAuto);    
    	wordtable = wordtables.Item(wordtables.GetCount());
    	
    	VARIANT vtstyle;
    	vtstyle.vt = VT_BSTR;
    	_bstr_t bstr = "网格型";
    	vtstyle.bstrVal = bstr;
    	if (wordtable.GetStyle().bstrVal == vtstyle.bstrVal){
    		wordtable.SetStyle(&vtstyle);
    		wordtable.SetApplyStyleFirstColumn(TRUE);
    		wordtable.SetApplyStyleHeadingRows(TRUE);
    		wordtable.SetApplyStyleLastColumn(TRUE);
    		wordtable.SetApplyStyleLastRow(TRUE);        
    	}
    	return TRUE;
    }
    
    void WordHandle::WriteCell(int nRow, int nColumne, LPCTSTR szText){
    	if (wordtable!=NULL){
    		cell = wordtable.Cell(nRow,nColumne);
    		cell.Select();
    		wordsel.TypeText(szText);		
    	}	
    }
    
    //将数字num以lpszFormat的形式写入(nRow,nColumne)中
    void WordHandle::WriteCell(int nRow, int nColumne, LPCTSTR lpszFormat, float num){ 
    	if(wordtable != NULL){
    		cell = wordtable.Cell(nRow, nColumne);
    		cell.Select();
    		CString str;
    		str.Format(lpszFormat, num);
    		wordsel.TypeText(str);
    	}
    }
    
    void WordHandle::ShowWord(BOOL show){
    	if (!wordapp.m_lpDispatch){
    		return ;
    	}
    	wordapp.SetVisible(show);
    }
    
    BOOL WordHandle::CreateWord(){
    	if (FALSE == CreateApp()){
    		return FALSE;
    	}
    	return CreateDocumtent();
    }
    
    //输出文字
    void WordHandle::WriteText(LPCTSTR szText){
    	if (!wordsel.m_lpDispatch){
    		return ;
    	}
    	wordsel.TypeText(szText);
    	wordtable=NULL;
    }
    
    //添加新段落
    void WordHandle::AddParagraph(){
    	if (!wordsel.m_lpDispatch){
    		return ;
    	}
    	wordsel.EndKey(COleVariant((short)6),COleVariant(short(0)));  //定位到全文末尾
    	wordsel.TypeParagraph();//新的段落,也就是回车换行
    	wordtable=NULL;
    }
    
    //设置字体样式、字体大小、字体颜色、背景色
    void WordHandle::SetFont(LPCTSTR szFontName, float fSize, long lFontColor, long lBackColor){
    	if (!wordsel.m_lpDispatch)	{
    		MessageBox(NULL,"Select为空,字体设置失败!","错误提示", MB_OK|MB_ICONWARNING);
    		return;
    	}
    	wordsel.SetText("F");
    	wordFt = wordsel.GetFont();
    	wordFt.SetSize(fSize);
    	wordFt.SetName(szFontName);
    	wordFt.SetColor(lFontColor);
    	wordsel.SetFont(wordFt);
    	range = wordsel.GetRange();
    	range.SetHighlightColorIndex(lBackColor);
    }
    
    //设置粗体、斜体、下划线
    void WordHandle::SetFont(BOOL bBold, BOOL bItalic, BOOL bUnderLine){
    	if (!wordsel.m_lpDispatch){
    		MessageBox(NULL,"Select为空,字体设置失败!", "错误提示",MB_OK|MB_ICONWARNING);
    		return;
    	}
    	wordsel.SetText("F");
    	wordFt = wordsel.GetFont();
    	wordFt.SetBold(bBold);
    	wordFt.SetItalic(bItalic);
    	wordFt.SetUnderline(bUnderLine);
    	wordsel.SetFont(wordFt);
    }
    
    //设置单元格(nRow, nColumn)字体样式、字体大小、字体颜色、背景色
    void WordHandle::SetTableFont(int nRow, int nColumn, LPCTSTR szFontName, float fSize, long lFontColor, long lBackColor){
    	cell = wordtable.Cell(nRow, nColumn);
    	cell.Select();
    	wordFt = wordsel.GetFont();
    	wordFt.SetName(szFontName);
    	wordFt.SetSize(fSize);
    	wordFt.SetColor(lFontColor);
    	wordsel.SetFont(wordFt);
    	range = wordsel.GetRange();
    	range.SetHighlightColorIndex(lBackColor);
    }
    
    //设置从(beginRow, beginColumn)到(endRow, endColumn)所围区域单元格的字体样式、字体大小、字体颜色、背景色
    void WordHandle::SetTableFont(int beginRow, int beginColumn, int endRow, int endColumn, LPCTSTR szFontName, float fSize, long lFontColor, long lBackColor){
    	wordtable.SetBottomPadding(10.0);
    	int nRow, nColumn;
    	for(nRow = beginRow; nRow <= endRow; nRow++){
    		for(nColumn = beginColumn; nColumn <= endColumn; nColumn++){
    			SetTableFont(nRow, nColumn, szFontName, fSize, lFontColor, lBackColor);
    		}
    	}
    }
    
    //设置单元格(nRow, nColumn)粗体、斜体、下划线
    void WordHandle::SetTableFont(int nRow, int nColumn, BOOL bBold, BOOL bItalic, BOOL bUnderLine){
    	cell = wordtable.Cell(nRow, nColumn);
    	cell.Select();
    	wordFt = wordsel.GetFont();
    	wordFt.SetBold(bBold);
    	wordFt.SetItalic(bItalic);
    	wordFt.SetUnderline(bUnderLine);
    	wordsel.SetFont(wordFt);
    }
    
    //设置表格单元格(nRow, nColumn)的水平、垂直对齐方式
    void WordHandle::SetTableFormat(int nRow, int nColumn, long horizontalAlignment, long verticalAlignment){
    	cell = wordtable.Cell(nRow, nColumn);
    	cell.Select();
    	cell.SetVerticalAlignment(verticalAlignment);
    	paragraphformat = wordsel.GetParagraphFormat();
    	paragraphformat.SetAlignment(horizontalAlignment);
    	wordsel.SetParagraphFormat(paragraphformat);
    }
    
    //设置表格从(beginRow, beginColumn)到(endRow, endRow)区域内水平、垂直对齐方式
    void WordHandle::SetTableFormat(int beginRow, int beginColumn, int endRow, int endColumn, long horizontalAlignment, long verticalAlignment){
    	int nRow, nColumn;
    	for( nRow = beginRow; nRow <= endRow; nRow++){
    		for( nColumn = beginColumn; nColumn <= endColumn; nColumn++){
    			SetTableFormat(nRow, nColumn, horizontalAlignment, verticalAlignment);
    		}
    	}
    }
    
    //设置表格单元格的上下左右内边距填充
    void WordHandle::SetTablePadding(float topPadding, float bottomPadding, float leftPadding, float rightPadding){
    	wordtable.SetTopPadding(topPadding);
    	wordtable.SetBottomPadding(bottomPadding);
    	wordtable.SetLeftPadding(leftPadding);
    	wordtable.SetRightPadding(rightPadding);
    }
    
    //合并单元格
    BOOL WordHandle::MergeCell(int  cell1row, int cell1col, int cell2row, int cell2col){
    	Cell cell1=wordtable.Cell(cell1row,cell1col);
    	Cell cell2=wordtable.Cell(cell2row,cell2col);
    	cell1.Merge(cell2);
    
    	return TRUE;
    }
    
    //创建图表
    void WordHandle::CreateChart(){
    	ishaps=	wordsel.GetInlineShapes();
    	CComVariant classt;
    	classt=CComVariant("MSGraph.Chart.8");
    	ishap=ishaps.AddOLEObject(&classt,vOptional,vFalse,vFalse,vOptional,vOptional,vOptional,vOptional);
    	AddParagraph();
    }
    
    //添加图片
    void WordHandle::AddPicture(LPCTSTR picname){
    	
    	ishaps=	wordsel.GetInlineShapes();	
    	ishap=ishaps.AddPicture(picname,vFalse,vTrue,vOptional);   
    
    	AddParagraph();
    }
    
    void WordHandle::AddTime(CTime time){
    }
    
    void WordHandle::CloseWord(){
    	if (!wordapp.m_lpDispatch){
    		return ;
    	}
    	SaveChanges=ComVariantFalse;
    	wordapp.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
    }
    
    void WordHandle::CloseWordSave(LPCTSTR wordname){
    	if (!wordapp.m_lpDispatch){
    		return ;
    	}
    	if (!worddoc.m_lpDispatch){
    		return ;
    	}
        worddoc.SaveAs(&CComVariant(wordname), 
    		&CComVariant((short)0),
    		vFalse, &CComVariant(""), vTrue, &CComVariant(""),
    		vFalse, vFalse, vFalse, vFalse, vFalse,
    		vFalse, vFalse, vFalse, vFalse, vFalse);
    	SaveChanges=ComVariantTrue;
        wordapp.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);
    }

    如下是调用函数,比较简单哦!


    void CAutotestView::OnBtn1Click() 
    {	
    
    	WordHandle wordHandle;
    	wordHandle.CreateWord();
    
    	// 获取应用当前Debug路径
    	char fileName[MAX_PATH];
    	GetModuleFileName(NULL, fileName, MAX_PATH);
    	char dir[260];
    	char dirver[100];
    	_splitpath(fileName, dirver, dir, NULL, NULL);
    	CString strAppPath = dirver;
    	strAppPath += dir;
    	wordHandle.AddPicture(strAppPath+"\\logo.bmp");  //必须保证debug目录下有一张logo图片
    	
    	wordHandle.AddParagraph();
    	wordHandle.SetParagraphFormat(wdAlignParagraphCenter);
    	wordHandle.SetFont(_T("黑体"), 18);
    	wordHandle.WriteText(_T("XXXXXXXXXX测试报告"));
    	
    	wordHandle.AddParagraph();
    	wordHandle.AddParagraph();
    	wordHandle.SetFont(_T("宋体"), 10);
    	wordHandle.SetParagraphFormat(wdAlignParagraphRight);
    	wordHandle.WriteText(_T("生成时间:"));
    	wordHandle.WriteText(CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S")));
    
    	//连接access数据库TestInfoSet
    	CString strSQL;
    	CAutotestApp*  ptheApp = (CAutotestApp *) AfxGetApp();
    	strSQL.Format("select * from TestInfo where TestID = %d order by TestID",ptheApp->m_testID);
    	if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)){
    		MessageBox("打开数据库失败!","数据库错误",MB_OK);
    		return ;
    	}
    
    	//创建表格
    	wordHandle.CreateTable(9, 4);
    	wordHandle.SetTableFont(1, 1, 9, 4, _T("宋体"), 12);
    	wordHandle.SetTableFormat(1, 1, 9, 4, wdAlignParagraphCenter, wdCellAlignVerticalCenter);
    	wordHandle.SetTablePadding();
    	wordHandle.WriteCell(1, 1, _T("XX型号"));
    	wordHandle.WriteCell(1, 2, m_recordset.m_CableGG);
    	wordHandle.WriteCell(1, 3, _T("XX类型"));
    	wordHandle.WriteCell(1, 4, m_recordset.m_AATT);
    	wordHandle.WriteCell(2, 1, _T("测试长度"));
    	wordHandle.WriteCell(2, 2, _T("????"));  m_testlen
    	wordHandle.WriteCell(2, 3, _T("XX增益"));
    	wordHandle.WriteCell(2, 4, m_recordset.m_AG);
    	wordHandle.WriteCell(3, 1, _T("纵向损耗"));
    	wordHandle.WriteCell(3, 2, _T("????"));
    	wordHandle.WriteCell(3, 3, _T("XX方向"));
    	wordHandle.WriteCell(3, 4, m_recordset.m_AO);
    	wordHandle.WriteCell(4, 1, _T("采样数量"));
    	wordHandle.WriteCell(4, 2, "%d", m_recordset.m_CableCD/m_recordset.m_step);
    	wordHandle.WriteCell(4, 3, _T("XX高度"));
    	wordHandle.WriteCell(4, 4, m_recordset.m_AH);
    	wordHandle.WriteCell(5, 1, _T("测试频率"));
    	wordHandle.WriteCell(5, 2, "%d", m_recordset.m_frequency);
    	wordHandle.WriteCell(5, 3, _T("XX距离"));
    	wordHandle.WriteCell(5, 4, m_recordset.m_AD);
    	wordHandle.WriteCell(6, 1, _T("测试日期"));
    	wordHandle.WriteCell(6, 2, m_recordset.m_TestDate.Format("%Y-%m-%d %H:%M:%S"));
    	wordHandle.WriteCell(6, 3, _T("测试人员"));
    	wordHandle.WriteCell(6, 4, m_recordset.m_Tester);
    	wordHandle.WriteCell(7, 1, _T("测试仪器"));
    	wordHandle.WriteCell(7, 2, _T("????"));
    	wordHandle.WriteCell(7, 3, _T("测试温度"));
    	wordHandle.WriteCell(7, 4, "%2.1f", m_recordset.m_temperature);
    	wordHandle.WriteCell(8, 1, _T("耦合损耗"));
    	wordHandle.WriteCell(8, 2, _T("????"));
    	wordHandle.WriteCell(8, 3, _T("XXX值"));
    	wordHandle.WriteCell(8, 4, _T("????"));
    	wordHandle.WriteCell(9, 1, _T("XXX值"));
    	wordHandle.WriteCell(9, 2, _T("????"));
    	wordHandle.WriteCell(9, 3, _T("XXX值"));
    	wordHandle.WriteCell(9, 4, _T("????"));
    	m_recordset.Close();
    
    	//屏幕截图保存
    	CString bigChart = _T("\\big.bmp");
    	CString smallChart = _T("\\small.bmp");
    	m_static.Save(strAppPath+bigChart);
    	m_astatic.save(strAppPath+smallChart);
    
    	wordHandle.AddParagraph();
    	wordHandle.SetParagraphFormat(wdAlignParagraphCenter);
    	wordHandle.AddPicture(strAppPath+bigChart);
    	wordHandle.AddPicture(strAppPath+smallChart);
    	wordHandle.ShowWord(TRUE); //设置可见
    }

    现在贴上一个比较低级的一个demo,VS2010创建,DAO连接ACCESS数据库,生成word文档:http://download.csdn.net/detail/cai843383655/9402675

    下面简要说一下如何通过MSWORD.OLB生成可操作word文档的接口文件,即上述的msword.hmsword.cpp


    1. vs2010创建一个项目,打开类向导



    2. 右上角添加类,下拉框选择类型库中的MFC类



    3. 文件来源添加类,选择文件位置:C:\Program Files (x86)\Microsoft Office\Office14




    4.生成类,可以根据自己需要只选择其中几项




    注:

    用VS2010生成的类不在一个文件中,用vc++6.0可把所有类集中在同一个文件中(头文件与目标文件)。上述的msword.h与msword.cpp是在VC++6.0中导入生成的,其它版本没有测试过。

    另外,用上述同样方法可以操作excel文件,只不过导入的excel.exe。其它office文件类似,下面是别人的一些总结,搬运过来。

    Office 版本和类型

    类型库文件

    Office 版本和类型

    类型库文件

    Access 97Msacc8.olbPowerPoint 2000Msppt9.olb
    Jet Database3.5 DAO350.dllWord 2000Msword9.olb
    Binder 97Msbdr8.olbAccess 2002Msacc.olb
    Excel 97Excel8.olbExcel 2002Excel.exe
    Graph 97Graph8.olbGraph 2002Graph.exe
    Office 97Mso97.dllOffice 2002MSO.dll
    Outlook 97Msoutl97.olbOutlook 2002MSOutl.olb
    PowerPoint 97Msppt8.olbPowerPoint 2002MSPpt.olb
    Word 97Msword8.olbWord 2002MSWord.olb
    Access 2000Msacc9.olbOffice Access 2003Msacc.olb
    Jet Database 3.51DAO360.dllOffice Excel 2003Excel.exe
    Binder 2000Msbdr9.olbGraph 2003Graph.exe
    Excel 2000Excel9.olbOffice 2003MSO.dll
    Graph 2000Graph9.olbOffice Outlook 2003MSOutl.olb
    Office 2000Mso9.dllOffice PowerPoint 2003MSPpt.olb
    Outlook 2000Msoutl9.olbOffice Word 2003MSWord.olb



    附地址:http://blog.csdn.net/wowolook/article/details/8509664

    展开全文
  • python将word表格转写入excel

    千次阅读 2019-09-30 20:15:57
    想将一份 word 文件中的几个表格转写入 excel 文件中,后续用 excel 处理。 用到 python-docx 和 pandas 分别处理 word 和 excel。 安装 python-docx:pip install python-docx,它不接受 .doc 文件,先转存为 .docx...

    Notes

    想将一份 word 文件中的几个表格转写入 excel 文件中,后续用 excel 处理。
    用到 python-docxpandas 分别处理 word 和 excel。
    安装 python-docx:pip install python-docx,它接受 .doc 文件,先转存为 .docx
    下面从 test.docx 读入,写到 test.xlsx

    code

    from docx import Document
    import pandas as pd
    
    word = 'test.docx'
    excel = 'test.xlsx'
    
    doc = Document(word)  # word 文件
    xls = pd.ExcelWriter(excel)  # 用来写入 excel
    
    tables = doc.tables  # word 中所有 tables
    # print(tables)
    # tb = tables[0]  # 第一个 table
    # print(dir(tb))
    # print(len(tb.rows), len(tb.columns))  # 行数、列数
    for i, tb in enumerate(tables):
        mat = []  # 用 list 套 list 的方法装二维表格内容
        for r in range(1, len(tb.rows)):
            row = []
            for c in range(1, len(tb.columns)):
                cell = tb.cell(r, c)
                txt = cell.text if cell.text != '' else ' '  # 无内容用空格占位
                row.append(txt)
            mat.append(row)
    
    	# 用 mat 创建 DataFrame
        df = pd.DataFrame(mat)
        # print(df)
        # DataFrame 写入 excel 中的某张 sheet
        # 并且不要首列 index 和首行的 header(默认会有,比如数字标号)
        df.to_excel(xls, sheet_name=f'{i}', index=False, header=False)
    
    xls.save()  # 保存
    xls.close()  # 关闭
    

    References

    1. python-docx
    2. python读取word文档表格里的数据
    3. Pandas与EXCEL之数据读取/保存/文件分割/文件合并
    4. Python Pandas读取修改excel操作攻略
    5. python3 pandas读写excel
    展开全文
  • 假期最后一天,明天就要上班了,今天给大家分享20个Word实用技巧,希望你们能够喜欢。01、一键选择同样的内容编辑Word时,如果需要将相同样式的内容全选复制出去该怎么办...02、表格文字自适应我们在Word里面插入表...
  • word 2016利用表格编排公式及编号

    千次阅读 2018-12-19 00:50:16
     利用word写文章时,不免需要用使用公式。插入公式和上节介绍的插入图表一样,也需要对其进行编号和交叉引用,但是插入公式也插入图表也不太一样,在这里介绍利用表格来插入公式并对其进行排版和编号,以做备忘。 ...
  • 案例思想是源于前两天帮读者做了一个 demo ,需求大致将一上百个 word表格内容提取出来(所有word表格样式一样),把提取到的内容自动存入 Excel 中 word表格形式如下 目前含有数个上面形式的 word 文档需要...
  • 一.制作模板 1.将word文档制作成以下样式,需要替换的内容放占位符,并按照占位符名字替换数据。...将word另存为xml格式,这里因为项目需要,我将word保存为.xml 2003。然后将xml文件以标签的形式打开,这里我使...
  • python 读取word 表格,写入excel

    千次阅读 热门讨论 2019-04-11 21:33:39
    以上word表格汇总为下面的EXCEL表格 用到两个模块,docx,openpyxl 也可以写到csv文件,不过csv文件过长的数字文本会自动转科学计数 excel文件,内容没有转成数字,是默认插入的文本,如果加入判断语句又会有点...
  • Word技巧:在表格前添加空行

    千次阅读 2019-03-17 20:47:35
    By: Ailson Jack Date: 2019.02.19 个人博客:http://www.only2fire.com/ 本文在我博客的地址是:... 有时候在编写word文档时,插入一个表格后,需要在表格前面添加一个空行,我之前的做法是将表格向下移动...
  • 在使用NPOI操作制作word数据模板时,需要在word中插入表格,包括合并单元格的方式 图例: 1,没有合并单元的方式创建表格,这种方式是提前创建好所需要的表格,然后再往里面填数 XWPFDocument doc= new ...
  • 在MS WORD中,当有大量的表格出现时,调整每个表格的的高和宽和大小将是一件非常累的事情,拖来拖去,非常耗时间,而且当WORD文档达到300页以上时,调整反应非常的慢,每次拖拉线后,需要等待一段时间其才完成调整,...
  • Excel中快速输入连续数字相信几乎是众所周知的事情了,可是Word表格中又该如何是好呢。 使用“格式--->项目符号和编号”倒是一种方法,自动生成数字。下方带图文解说。 ...1. Excel中快速输入连续数
  • word 批量给表格增加题注

    千次阅读 2019-12-26 12:15:50
    1.选中一个表,增加题注(引用->...此时显示为“表{SEQ 表格 \* ARABIC }” 5.复制“表{SEQ 表格 \* ARABIC }” 6.开始->替换,打开替换窗口。 7.输入查找内容(我的情况是本来每个表都有表名,但...
  • 来自:Office之家链接:http://www.icanzc.com/wps/6853.html经常会遇到把表格改成文字,或者是把文字制成表格的情况,其实word有一个可以自动转换的方法。学会这个方法在进行表格和文字互相转换的时候就容易多了。...
  • CTRow ctRow = row.getCtRow(); CTTrPr trPr = ctRow.isSetTrPr() ? ctRow.getTrPr() : ctRow.addNewTrPr();...指定某一行为表格重复出现的标题即可 w:trPr> w:tblHeader /> w:trPr> 上面的XML即为MSof
  • word数字保留两位小数

    千次阅读 2018-01-11 10:24:20
    由于数字较多(都大于两位),使用正则表达式。实际应用具体修改。
  •   本周遇到两次同样的问题,需要向Word 2007中的表格中插入序号,由于有很多行,手动一行一行的输入序号太麻烦,因此最好能够自动添加序号。第一次的时候我在Word中找到了插入序号的功能,但是忘了记下来了,等到...
  • 点击上方“编程派”,选择设为“设为星标”优质文章,第一时间送达!大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)一...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别?...
  • Office之替换word里的数字

    千次阅读 2019-05-16 10:10:21
    今天帮朋友搞参考文献,遇到个小问题,怎么把他手写的[1]替换掉。一百多个肯定不能手动删除。 选中要替换的文本部分 Ctrl F,替换,勾选使用通配符 ...[[0-9]{1,3}] 意思是1位到3位的数字,两边的是转移符 ...
  • 使用vba在word中处理表格时,有时要判断这一行表格是否为空白,无内容,以便中止或者跳过读取数据,编辑内容。 可以使用Table对象的Rows属性返回具体的行,然后判断第一个单元格无内容.再做下一步操作. 在word中,空白...
  • 使用:https://blog.csdn.net/weixin_43617546/article/details/104007163导出word,表格格式混乱,如图: 解决办法: 1.打开模板,选中表格,点击段落右下角的图标。 2.进入段落页面后,点击进入中文版式,然后把...
  • 成功解决在word文件的表格中当输文字时自动出现加红色和下划线 目录 解决问题 解决思路 解决方法 解决问题 成功解决在word文件的表格中当输文字时自动出现加红色和下划线 解决思路 在输入...
  • word对齐表格不在一行的文字

    千次阅读 2019-10-31 15:45:05
    右键,表格属性,单元格,居中

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,252
精华内容 11,700
关键字:

word表格设置数字格式