2013-07-30 2 views
0

저는 Microsoft.Office.Interop.Word.Application으로 작업하고 있습니다. 나는 어떤 템플릿 파일을 가지고있다. 어떤 파일에 어떤 토큰이 있을까? [PutfirstTableHere] 런타임에 나는 테이블을 생성하고 기존 워드 문서의 토큰을 생성 된 테이블로 대체하려고한다. 내가 Word에서 테이블과 문자열 토큰을 바꿀 수 있습니까? 내 현재의 문제에 대한 어떠한 예/샘플을 찾을 수없는Word 문서의 문자열 토큰을 단어 테이블로 바꿉니다.

+0

같은 토큰을 사용하지 마십시오, 말씀이 아주 좋습니다 책갈피를 가지고있다. 이것을 예제로 사용하십시오. http://msdn.microsoft.com/en-us/library/6b9478cs(v=vs.80).aspx. 또한 OpenXMLSdk를 사용하는 것이 좋습니다. Word를 필요로하지 않고 Interop보다 빠르기 때문입니다. http://msdn.microsoft.com/en-us/library/office/bb456488.aspx – trebor

+0

OpenXmlSdk를 사용할 수 없습니다. 그것은 문서를 방해합니다. –

답변

0

이 시도 :

protected void InsertTableAtBookMark(string[][] docEnds, string bookmarkName) 
    { 
     Object oBookMarkName = bookmarkName; 
     Range wRng = WordDoc.Bookmarks.get_Item(ref oBookMarkName).Range; 

     Table wTable = WordDoc.Tables.Add(wRng, docEnds.Length, docEnds[0].Length); 
     wTable.set_Style("Table Grid"); 

     for (int i = 0; i < docEnds.Length; i++) 
     { 
      for (int j = 0; j < docEnds[0].Length; j++) 
      { 
       wTable.Cell(i, j).Range.Text = docEnds[i][j]; 
       wTable.Cell(1, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft; 
       wTable.Cell(1, 1).VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter; 
      } 
     } 
     Borders wb = wTable.Borders; 
     wb[WdBorderType.wdBorderHorizontal].LineStyle = WdLineStyle.wdLineStyleNone; 
     wb[WdBorderType.wdBorderVertical].LineStyle = WdLineStyle.wdLineStyleNone; 

     wTable.Borders = wb; 
    } 
WordDoc는 Microsoft.Office.Interop.Word 네임 스페이스의 Document 형이다

;

+0

토큰을 통해 할 수 없습니까? 사실 나는 tempalte에 다른 것들은 쉽게 교체 할 수 있다고 생각되는 간단한 문자열이다. 다른 것들은 genreated 테이블에 의해 대체 되어야만하는 토큰이다. –

+0

당신은 문자열을 사용하여 그것을 할 수 있지만 좀 더 관련이있다. 다음과 같은 것을 사용하라.'object start = 0; 개체 끝 = 0; Word.Range tableLocation = this.Range (ref start, ref end);'시작과 끝을 문자열로 바꾸는 곳은 정말로 권장하지 않지만 선택 사항입니다. 그것에 대한 어떤 샘플도 – trebor

+0

에 의해? 그것을 얻을 수없고 일할 수 없다. –

0

Find InterfaceExecute 방법을 사용하여 문서 콘텐츠를 검색 할 수 있습니다. 첫 번째 인수는 범위에서 검색 할 텍스트입니다 (귀하의 경우에는 Word.Document.Content 속성을 권하고 싶습니다).

코드 :

Word.Document doc = Application.ActiveDocument; 
Word.Range wholeDoc = doc.Content;     

Word.Find find = wholeDoc.Find; 

object token = "[MyTableToken]";     
object missing = Type.Missing; 

bool result = find.Execute(ref token, true, true, ref missing, ref missing, ref missing, ref missing, ref missing, 
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); 

while (result) 
{ 
    // wholeDoc object is replaced with executed search/find result 
    CreateTable(wholeDoc.Duplicate); 

    result = find.Execute(ref token, true, true, ref missing, ref missing, ref missing, ref missing, ref missing, 
     ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); 
} 

샘플 테이블 방법을 만듭니다

private void CreateTable(Word.Range range) 
{ 
    Word.Tables tables = null; 
    try 
    { 
     int sampleRowNumber = 3, sampleColumnNumber = 3; 

     range.Text = ""; 
     tables = range.Tables; 

     tables.Add(range, sampleRowNumber, sampleColumnNumber); 
    } 
    finally 
    { 
     Marshal.ReleaseComObject(range); 
     Marshal.ReleaseComObject(tables); 
    } 
} 
관련 문제