none
C#操作word,关于段落文本值以及表格文本值格式的问题求教! RRS feed

  • 问题

  • 问题:在对word文件进行数据填充时,如何使段落中的一部分文件添加下划线或者使表格中某一单元格中的部分文本内容添加下划线。

    疑惑:尝试使用table.Cell(2, 1).Range.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle;但这导致整个单元格中的所有文本内容都带上了下划线。尝试过插入段落等等方法,但一直都未能实现。

    求教!!!!

    2015年4月3日 4:00

答案

  • 你好:

    这个是可以实现的,只要计算好range的开始和结束的位置就可以正确设置font,比如下面这段代码,我将该单元格中的第3到5个字符设置了下划线:

    Application app = new Application();
                app.Visible = true;
                Document doc = app.Documents.Open(@"C:\test.docx");
    
                Table table = doc.Tables[1];
    
                int start = table.Cell(2, 1).Range.Start + 3;
                int end = table.Cell(2, 1).Range.Start + 5;
    
                doc.Range(start, end).Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle;
    
                doc.Save();
                app.Quit();
    Document.Range方法可以正确定位到你想要的文档位置。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年4月16日 8:30
    版主
  • 这个问题同样可以通过Range这个属性来解决,插入第二个表格的时候没有计算好插入的位置,所以默认插入到第一个表格的第一个单元格中了, 插入第一个表格的时候应该记录一下插入的位置(获取range值),或者通过Tables查找到相应的Table,记录下Range,通过Document.get_range获取到正确的应该插入第二个表格的range, 调用InsertAfter等方法插入第二个表格。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月4日 8:13
    版主

全部回复

  • 你好:

    这个是可以实现的,只要计算好range的开始和结束的位置就可以正确设置font,比如下面这段代码,我将该单元格中的第3到5个字符设置了下划线:

    Application app = new Application();
                app.Visible = true;
                Document doc = app.Documents.Open(@"C:\test.docx");
    
                Table table = doc.Tables[1];
    
                int start = table.Cell(2, 1).Range.Start + 3;
                int end = table.Cell(2, 1).Range.Start + 5;
    
                doc.Range(start, end).Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineSingle;
    
                doc.Save();
                app.Quit();
    Document.Range方法可以正确定位到你想要的文档位置。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2015年4月16日 8:30
    版主
  • 你好:

           不好意思,忙别的忘记这个问题了,非常感谢您的回复!

    可以再询问一个问题嘛?

    因为表格是使用的后台代码添加的,在插入第一个表格并填充数据以后继续重复添加多个表格,会出现定位错误,会将表格插入到第一个表格地第一个单元格里

    2015年4月30日 10:37
  • 这个问题同样可以通过Range这个属性来解决,插入第二个表格的时候没有计算好插入的位置,所以默认插入到第一个表格的第一个单元格中了, 插入第一个表格的时候应该记录一下插入的位置(获取range值),或者通过Tables查找到相应的Table,记录下Range,通过Document.get_range获取到正确的应该插入第二个表格的range, 调用InsertAfter等方法插入第二个表格。

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月4日 8:13
    版主
  • 谢谢,搞定了
    2015年5月7日 1:27