C# 操纵microsoft word

C# 操纵microsoft word,c#,.net,vb.net,C#,.net,Vb.net,我目前正在编写此应用程序,以打印并创建一个新word文档的报告。然而,我遇到了一个绊脚石。当我将数据写入这个新的Microsoft word文档时,他们是否有办法检查它是否是一个新页面(例如,报告占10页),他们是否有办法检查应用程序何时开始在新页面上写入 代码: Dim objWord As Word.Application Dim objDoc As Word.Document Dim objTable As Word.Table Dim r As Integer, c As Integ

我目前正在编写此应用程序,以打印并创建一个新word文档的报告。然而,我遇到了一个绊脚石。当我将数据写入这个新的Microsoft word文档时,他们是否有办法检查它是否是一个新页面(例如,报告占10页),他们是否有办法检查应用程序何时开始在新页面上写入


代码:

Dim objWord 
As Word.Application
Dim objDoc As Word.Document
Dim objTable As Word.Table
Dim r As Integer, c As Integer
Dim pages1 As Pages
Dim pagecountbefore As Integer

objWord = CreateObject("Word.Application")
objWord.Visible = True
objDoc = objWord.Documents.Add

pagecountbefore = pages1.Count

objTable = objDoc.Tables.Add(objDoc.Bookmarks.Item("\endofdoc").Range, 3, 5)
objTable.Range.ParagraphFormat.SpaceAfter = 6
For r = 1 To 1000
    For c = 1 To 5
         If r = 1 Then
            Select Case c
                Case "1"
                    objTable.Cell(r, c).Range.Text = "PCI DSS Requirements "
                Case "2"
                    objTable.Cell(r, c).Range.Text = "Testing Procedures "
                Case "3"
                    objTable.Cell(r, c).Range.Text = "In Place"
                Case "4"
                    objTable.Cell(r, c).Range.Text = "Not in Place"
                Case "5"
                    objTable.Cell(r, c).Range.Text = "Target Date/ Comments"
            End Select
        Else
            If pagecountbefore<pages1.Count Then
                pagecountbefore = pages1.Count
                Select Case c
                    Case "1"
                        objTable.Cell(r, c).Range.Text = "PCI DSS Requirements "
                    Case "2"
                        objTable.Cell(r, c).Range.Text = "Testing Procedures "
                    Case "3"
                        objTable.Cell(r, c).Range.Text = "In Place"
                    Case "4"
                        objTable.Cell(r, c).Range.Text = "Not in Place"
                    Case "5"
                        objTable.Cell(r, c).Range.Text = "Target Date/Comments"
                End Select
            Else
              'print resultrs from database
            End If
        End If
    Next
Next
Dim objWord
如Word.Application
Dim objDoc作为Word.Document
模糊对象,如Word.Table
Dim r为整数,c为整数
将页面1变暗为页面
Dim pagecountbefore作为整数
objWord=CreateObject(“Word.Application”)
objWord.Visible=True
objDoc=objWord.Documents.Add
pagecountbefore=pages1.Count
objTable=objDoc.Tables.Add(objDoc.Bookmarks.Item(“\endofdoc”)。范围,3,5)
objTable.Range.ParagraphFormat.SpaceAfter=6
对于r=1至1000
对于c=1到5
如果r=1,则
选择案例c
案例“1”
objTable.Cell(r,c).Range.Text=“PCI DSS要求”
案例“2”
objTable.Cell(r,c).Range.Text=“测试程序”
案例“3”
objTable.Cell(r,c).Range.Text=“就地”
案例“4”
objTable.Cell(r,c).Range.Text=“未就位”
案例“5”
objTable.Cell(r,c).Range.Text=“目标日期/注释”
结束选择
其他的

If pagecountbefore您可以每次检查word文档的页数,然后创建一个If子句来执行某些操作

您可以使用以下方法计算页面数:

myPageObject.Count //returns int
然后在每次写入数据时检查新页面

//Writing Data 
if(pagecountbefore < myObjectPage.Count){
    //Do Something 
}

为什么不;插入所有行后,您是否可以将表的第一行设置为标题行 objTable.Rows(1).HeadingFormat=True


我很好奇,if会在每页的顶部显示表格的跨度。你为什么关心网页?为什么不让Word处理分页呢?因为我正试图通过windows应用程序模拟我的公司拥有的这份报告。每个新页面都有表格标题,所以我想知道我如何做到这一点,我的意思是Word可以设置为做页眉和页脚,所以你不需要知道。是的,我知道页眉和页脚,但正如我所说,这是一个表,这应该是表的标题谢谢你的友好回复。不过,这是交易,让我再详细分析一下。我将运行一个数据读取器,当它从数据库中读取数据时,我将创建这个新文档,然后创建一个与查询相关的行数大小的表。因此,如果它有50行,那么它将是一个包含5列(例如firstname、lastname、job、country、address)和50行的表。现在,在阅读过程中,我希望应用程序在到达文档中的新页面时再次打印列的标题(firstname、lastname、job、country、address),然后继续插入数据,直到完成。有没有具体的方法可以做到这一点?我用这个代码Dim objDoc作为Word创建了一个对象。但是当我尝试引用它并获取计数时,没有可用的方法…您必须使用
Dim myPageObject作为页面
。看看这个:请用一些代码填充你的问题,然后也许我可以创建一些东西。但if条款应该适用于这种情况<代码>如果(pagecountbefore
我在这一行pagecountbefore=pages1.Count处得到一个对象引用错误,并且我在Dim pages1之前将其声明为页面。所以我不知道为什么?
  while(pagecountbefore == myObjectPage.Count){
       //Do Something 
  }