|
이 름 |
설 명 |
Close |
ReadState를 Closed로 변경. |
GetAttribute(int32) |
지정된 인덱스가 있는 특성의 값을 가져온다. |
GetAttribute(string) |
지정된 이름이 있는 특성값을 가져온다 |
GetAttribute(string, string) |
지정된 로컬 이름과 네임스페이스URI가 있는 특성값을 가져온다. |
GetRemainder |
버퍼링된XML 의 나머지 부분을 가져온다. |
MoveToElement |
현재 attribute노드가 포함된 요소로 이동한다. |
Read |
스트림에서 다음 특성으로 이동한다. |
ReadElementString(string) |
텍스트 전용 요소를 읽는다. |
ReadInnerXml |
태그를 포함한 모든 내용을 문자열로 읽는다. |
ReadOuterXml |
태그를 포함하여 이 노드 및 모든 자식 노드를 나타내는 내용을 읽는다. |
3. XmlTextReader 속성
이 름 |
설 명 |
AttributeCount |
현재 노드의 특성 수를 가져온다. |
BaseURI |
현재 노드의 기본 URI를 가져온다 |
Depth |
XML문서에서 현재 노드의 수준을 가져옵니다. |
Encoding |
문서의 인코딩을 가져온다 |
HasAttributes |
현재 노드에 특성이 있는지 여부를 나타내는 값을 가져온다. |
HasValue |
현재 노드에 String.Empty 이외의 Value 를 사용할 수 있는지 여부를 나타내는 값을 가져온다. |
Item(int32) |
인덱스가 있는 특성값을 가져온다. |
Item(string) |
지정된 Name이 있는 특성값을 가져온다. |
Item(string, string) |
LocalName 및 NamespaceURI가 있는 특성의 값을 가져온다. |
LineNumber |
현재 줄 번호를 가져온다. |
LinePosition |
현재 줄 위치를 가져온다 |
Name |
현재 노드의 정규화된 이름을 가져온다. |
ReadState |
판독기의 상태를 가져온다. |
Value |
현재 노드의 텍스트값을 가져온다 |
ValueType |
현재 노드의 CLR(공용 언어 런타임)형식을 가져온다 |
4. VSTO 구현 코드분석
코드분석 private void ThisDocument_Startup(object sender, System.EventArgs e) { XmlTextReader xtr = new XmlTextReader(@"C:\1.xml"); // xml파일의 경로를 통하여 XmlTextReader개체를 생성한다. Word.Table t; // 테이블을 만들기 위한 개체 생성 int row = 0; // 테이블 생성에 필요한 로우값을 구하기 위한 int형 개체 int picrow = 2; // 이미지가 들어갈 row값을 입력하기 위한 int형 개체 int altrow = 2; // alt 값이 들어갈 row값을 입력하기 위한 int형 개체 int sourcerow = 2; // source 값이 들어갈 row값을 입력하기 위한 int형 개체 while (xtr.Read()) ( xml파일을 순차적으로 읽는다. ) { if (xtr.Name.ToUpper() == "PAGE") { row++; // 노드 이름이 Page인 것 의 개수를 구한다. } } xtr.Close(); // 읽었던 xtr개체를 닫아준다. t = Tables.Add(Application.Selection.Range, row/2 +1, 3, ref missing, ref missing); // 얻어온 Page의 개수는 닫히는 부분인 /Page도 포함 되기 때문에 /2해준 후 위에 제목을 달기 위해 +1 을 해준다. t.Rows.Height = 60; // 테이블의 높이를 60으로 설정. t.Cell(1, 1).Range.Text = "이미지"; t.Cell(1, 2).Range.Text = "Alt 속성"; t.Cell(1, 3).Range.Text = "HTML Source"; // 각각의 컬럼명을 달아준다. object style = "표 구분선"; t.set_Style(ref style); //표의 스타일은 기본적인 구분선만 나오게 하는 표를 설정. XmlTextReader xtr1 = new XmlTextReader(@"C:\1.xml"); // xml파일을 다시 읽어오기 위한 개체를 생성. while (xtr1.Read()) { if (xtr1.Name.ToUpper() == "PATH") { t.Cell(picrow, 1).Range.InlineShapes.AddPicture(xtr1.ReadInnerXml(), ref missing, ref missing, ref missing); // 패치를 얻어와 이미지를 띄워준다 picrow++; // 이미지 로우를 증가 시켜 준다. (다음 이미지를 넣기 위해 ++ 시켜준다) } if (xtr1.Name.ToUpper() == "ALT") { t.Cell(altrow, 2).Range.Text = xtr1.ReadInnerXml(); altrow++; // alt속성을 띄워준다. ( 위와 동일 ) } if (xtr1.Name.ToUpper() == "SOURCE") { t.Cell(sourcerow, 3).Range.Text = xtr1.ReadInnerXml(); sourcerow++; } } } |
5. 실행 장면
불러오는데 사용된 XML파일의 일부
|
실행장면 |
6. 수정 및 보완해야 될 점
- 테이블의 수를 정확하게 구할 수 있는 방법 혹은 동적인 테이블을 생성할 수 있으면 좋을
것 같다.
- 기본적인 폰트 사이즈 크기로 이미지가 띄워지기 때문에 잘리는 부분이 있다.
- 표를 실제 보고서의 표로 정규화 해야 한다.
첫댓글 아직도 공룡과 같은 메소드를 작성하는가?
아직 공부 단계에서 실험 코딩이고, 앞으로 좀 더 공부해서 바꿔나갈 예정입니다.
예전 자료 찾다가 봤는데 ㅋㅋ 공룡 메소드 ㅋㅋ