■ 아래 한글 테이블을 추가하는 방법을 보여준다.
▶ 아래 한글 테이블 추가하기 예제 (VB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
HWPHideSecurityWarningWindow pHwpCtrl pHwpCtrl.EditMode = 0 pHwpCtrl.Open "c:\template.hwp" pHwpCtrl.MovePos 3 '-------------------------------------------------- ' 테이블 초기화 데이터를 생성한다. (컬럼 수 : 8) '-------------------------------------------------- Dim pColumnWidthArray As Variant ' 컬럼 너비 배열 (단위 : 밀리미터) Dim pColumnAlignmentArray As Variant ' 컬럼 정렬 배열 ; 왼쪽 정렬(L), 가운데 정렬(C), 오른쪽 정렬(R) Dim pColumnHeaderArray As Variant ' 컬럼 헤더 배열 ReDim pColumnWidthArray(1 To 8) As Variant ReDim pColumnAlignmentArray(1 To 8) As Variant ReDim pColumnHeaderArray(1 To 8) As Variant ' A4 가로 페이지 여백 10mm 설정시 이용 가능 크기 : 약 246 mm pColumnWidthArray(1) = 30.75 pColumnWidthArray(2) = 30.75 pColumnWidthArray(3) = 30.75 pColumnWidthArray(4) = 30.75 pColumnWidthArray(5) = 30.75 pColumnWidthArray(6) = 30.75 pColumnWidthArray(7) = 30.75 pColumnWidthArray(8) = 30.75 pColumnAlignmentArray(1) = "L" pColumnAlignmentArray(2) = "C" pColumnAlignmentArray(3) = "R" pColumnAlignmentArray(4) = "L" pColumnAlignmentArray(5) = "L" pColumnAlignmentArray(6) = "R" pColumnAlignmentArray(7) = "L" pColumnAlignmentArray(8) = "L" pColumnHeaderArray(1) = "가" pColumnHeaderArray(2) = "나" pColumnHeaderArray(3) = "다" pColumnHeaderArray(4) = "라" pColumnHeaderArray(5) = "마" pColumnHeaderArray(6) = "바" pColumnHeaderArray(7) = "사" pColumnHeaderArray(8) = "아" '-------------------------------------------------- ' 테이블 데이터를 생성한다. ' ※ 일반적으로 데이터베이스 조회 데이터를 설정한다. '-------------------------------------------------- Dim strValueArray() As String ReDim strValueArray(1 To 200, 1 To 8) As String Dim Y, X For Y = 1 To 200 For X = 1 To 3 strValueArray(Y, X) = "Z" & Y & "," & X Next X Next Y '-------------------------------------------------- ' 페이지 방향을 설정한다. '-------------------------------------------------- HWPSetPageDirection pHwpCtrl, True '-------------------------------------------------- ' 테이블을 초기화 한다. '-------------------------------------------------- HWPInitializeTable pHwpCtrl, 8, pColumnWidthArray, pColumnAlignmentArray, pColumnHeaderArray '-------------------------------------------------- ' 리포트 테이블을 추가한다. '-------------------------------------------------- HWPInsertReportTable pHwpCtrl, strValueArray, 30, 30 pHwpCtrl.MovePos 2 |
※ HWPHideSecurityWarningWindow 메소드 : "아래 한글 문서 여는 경우 보안 경고창 숨기기" 참조
※ HWPSetPageDirection 메소드 : "아래 한글 페이지 방향 설정하기" 참조
▶ 아래 한글 테이블 추가하기 (VB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 |
Option Explicit Dim m_pTableAction As HwpAction ' 테이블 생성 액션 객체 Dim m_pTableParameterSet As HwpParameterSet ' 테이블 생성 파라미터 세트 객체 Dim m_pTableParameterArray As HwpParameterArray ' 테이블 생성 파라미터 배열 객체 Dim m_pTextAction As HwpAction ' 텍스트 추가 액션 객체 Dim m_pTextParameterSet As HwpParameterSet ' 텍스트 추가 파라미터 세트 객체 Dim m_nColumnCount As Integer ' 컬럼 수 Dim m_dColumnWidthArray() As Double ' 컬럼 너비 배열 Dim m_strColumnAlignmentArray() As String ' 컬럼 정렬 배열 Dim m_strColumnHeaderArray() As String ' 컬럼 헤더 배열 '-------------------------------------------------- ' 아래 한글 테이블 초기화 하기 '-------------------------------------------------- ' pHwpCtrl : HwpCtrl OCX ' nColumnCount : 컬럼 수 ' pColumnWidthArray : 컬럼 너비 배열 (인덱스는 1부터 시작) ' pColumnAlignmentArray : 컬럼 정렬 배열 (인덱스는 1부터 시작) ' pColumnHeaderArray : 컬럼 헤더 배열 (인덱스는 1부터 시작) '-------------------------------------------------- Public Sub HWPInitializeTable(pHwpCtrl As HwpCtrl, nColumnCount As Integer, pColumnWidthArray As Variant, pColumnAlignmentArray As Variant, pColumnHeaderArray As Variant) Dim nColumn As Integer '-------------------------------------------------- ' 테이블 초기화 데이터를 해당 전역 변수에 설정한다. '-------------------------------------------------- m_nColumnCount = nColumnCount ReDim m_dColumnWidthArray(1 To nColumnCount) ReDim m_strColumnAlignmentArray(1 To nColumnCount) ReDim m_strColumnHeaderArray(1 To nColumnCount) For nColumn = 1 To nColumnCount m_dColumnWidthArray(nColumn) = CDbl(pColumnWidthArray(nColumn)) m_strColumnAlignmentArray(nColumn) = CStr(pColumnAlignmentArray(nColumn)) m_strColumnHeaderArray(nColumn) = CStr(pColumnHeaderArray(nColumn)) Next nColumn '-------------------------------------------------- ' 테이블 생성 객체를 정의한다. '-------------------------------------------------- Set m_pTableAction = pHwpCtrl.CreateAction("TableCreate") Set m_pTableParameterSet = m_pTableAction.CreateSet() m_pTableParameterSet.SetItem "Cols", m_nColumnCount m_pTableParameterSet.SetItem "WidthType", 2 m_pTableParameterSet.SetItem "HeightType", 1 m_pTableParameterSet.CreateItemSet "TableProperties", "Table" Set m_pTableParameterArray = m_pTableParameterSet.CreateItemArray("ColWidth", nColumnCount) For nColumn = 1 To nColumnCount m_pTableParameterArray.SetItem nColumn - 1, HWPGetUnit(CDbl(pColumnWidthArray(nColumn))) Next '-------------------------------------------------- ' 텍스트 추가 객체를 정의한다. '-------------------------------------------------- Set m_pTextAction = pHwpCtrl.CreateAction("InsertText") Set m_pTextParameterSet = m_pTextAction.CreateSet() End Sub '-------------------------------------------------- ' 아래 한글 테이블 추가하기 '-------------------------------------------------- ' pHwpCtrl : HwpCtrl OCX ' strTableID : 테이블 ID ' strValueArray : 값 배열 (※ 2차원 문자열 배열) ' nStartRow : 테이블에 추가할 값 배열 데이터의 시작 행 인덱스 ' (1부터 "전체 행 수 - nRowCount + 1"까지 지정 가능) ' nRowCount : 추가 행 수 '-------------------------------------------------- Public Sub HWPInsertTable(pHwpCtrl As HwpCtrl, strTableID As String, strValueArray() As String, nStartRow As Integer, nRowCount As Integer) Dim nRow As Integer Dim nColumn As Integer '-------------------------------------------------- ' 추가할 테이블 행 수를 설정한다. ' ※ 헤더를 포함해 행 수 + 1을 설정한다. '-------------------------------------------------- m_pTableParameterSet.SetItem "Rows", nRowCount + 1 '-------------------------------------------------- ' 테이블을 추가한다. '-------------------------------------------------- m_pTableAction.Execute m_pTableParameterSet pHwpCtrl.SetCurFieldName strTableID, 1, 0, 0 pHwpCtrl.MoveToField strTableID, False, False, False pHwpCtrl.Run "TableCellBlock" pHwpCtrl.Run "Cancel" '-------------------------------------------------- ' 컬럼 헤더를 설정한다. '-------------------------------------------------- For nColumn = 1 To m_nColumnCount pHwpCtrl.Run "ParagraphShapeAlignCenter" m_pTextParameterSet.SetItem "Text", m_strColumnHeaderArray(nColumn) m_pTextAction.Execute m_pTextParameterSet pHwpCtrl.Run "TableRightCell" Next nColumn '-------------------------------------------------- ' 셀 데이터를 설정한다. '-------------------------------------------------- For nRow = 1 To nRowCount For nColumn = 1 To m_nColumnCount '-------------------------------------------------- ' 컬럼 정렬 배열 값에 따라 셀 정렬을 설정한다. '-------------------------------------------------- Select Case m_strColumnAlignmentArray(nColumn) Case "L": pHwpCtrl.Run "ParagraphShapeAlignLeft" Case "R": pHwpCtrl.Run "ParagraphShapeAlignRight" Case Else pHwpCtrl.Run "ParagraphShapeAlignCenter" End Select '-------------------------------------------------- ' 셀 데이터를 설정한다. '-------------------------------------------------- m_pTextParameterSet.SetItem "Text", strValueArray(nStartRow + nRow - 1, nColumn) m_pTextAction.Execute m_pTextParameterSet pHwpCtrl.Run "TableRightCell" Next nColumn Next nRow End Sub '-------------------------------------------------- ' 아래 한글 리포트 테이블 추가하기 '-------------------------------------------------- ' pHwpCtrl : HwpCtrl OCX ' strValueArray : 값 배열 (※ 2차원 문자열 배열) ' nFirstPageRowCount : 첫 페이지 행 수 ' nPageRowCount : 페이지 행 수 '-------------------------------------------------- Public Sub HWPInsertReportTable(pHwpCtrl As HwpCtrl, strValueArray() As String, nFirstPageRowCount As Integer, nPageRowCount As Integer) Dim nTotalRowCount As Integer Dim nTotalPageCount As Integer Dim nPage As Integer Dim nStartRow As Integer Dim nRowCount As Integer nTotalRowCount = UBound(strValueArray, 1) If nTotalRowCount = 0 Then ' 전체 행 수가 0인 경우 HWPInsertTable pHwpCtrl, "TableID1", strValueArray, 1, 0 pHwpCtrl.MovePos 3 ElseIf nFirstPageRowCount > nTotalRowCount Then ' 첫 페이지 행 수가 전체 행 수보다 큰 경우 HWPInsertTable pHwpCtrl, "TableID1", strValueArray, 1, nTotalRowCount pHwpCtrl.MovePos 3 Else ' 상기 경우가 아닌 경우 nTotalPageCount = Round((nTotalRowCount - nFirstPageRowCount) / nPageRowCount + 0.5, 0) + 1 nStartRow = 1 For nPage = 1 To nTotalPageCount If nPage = 1 Then HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nFirstPageRowCount nStartRow = nStartRow + nFirstPageRowCount Else If nPage = nTotalPageCount Then If (nTotalRowCount - nFirstPageRowCount) Mod nPageRowCount = 0 Then HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nPageRowCount Else HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, (nTotalRowCount - nFirstPageRowCount) Mod nPageRowCount End If Else HWPInsertTable pHwpCtrl, "TableID" & nPage, strValueArray, nStartRow, nPageRowCount nStartRow = nStartRow + nPageRowCount End If End If pHwpCtrl.MovePos 3 Next End If End Sub |
※ HWPGetUnit 함수 : "아래 한글 단위 구하기" 참조