
각 열에 서로 다른 필드가 있는 Excel 파일이 있습니다.
필드 1__ | 필드 2__ | 등
F1 항목 1 | F2 항목 1 | 등
F1 항목 2 | F2 항목 2 | 등
각 필드에는 항목 수가 다릅니다.
각 필드의 모든 항목을 하나의 문서로 나열하고 각 레코드에 대해 여러 문서로 분할하지 않는 Word 2010 문서를 만들고 싶습니다. 따라서 최종 Word 문서는 다음과 같습니다.
필드 1
__ F1 항목 1
__ F1 항목 2
필드 2
__ F2 항목 1
__ F2 항목 2
__ F2 항목 3
"필드 1" 및 "필드 2" 레이블에는 메일 병합 필드가 필요하지 않지만 필드 아래의 모든 항목은 하나의 문서에 표시되도록 메일 병합되어야 합니다. 이것이 가능합니까? 이를 달성하는 방법에 대한 아이디어나 리소스가 있습니까?
답변1
이를 위해 SQL Server Reporting Services와 같은 쿼리 및 보고 도구를 사용하겠습니다. ODBC를 통해 Excel 파일에 연결할 수 있습니다. 예:
http://weblogs.sqlteam.com/joew/archive/2008/08/22/60695.aspx
보고서 디자인에는 두 개의 테이블이 있습니다. 하나는 필드 1용이고 다음은 필드 2용입니다. 데이터를 두 개의 데이터 세트로 가져오려면 두 개의 (아주 간단한) SQL SELECT 문을 작성해야 합니다.
Reporting Services는 Word로의 렌더링 작업을 훌륭하게 수행합니다. 레이아웃은 Word 메일 병합보다 훨씬 더 복잡할 수 있습니다(예: 여러 데이터 영역, 중첩된 하위 보고서, 복잡한 차트 등).
Reporting Services를 데스크톱 앱으로 실행하거나 Windows 또는 Word 앱에 포함하거나 SharePoint 사이트 또는 간단한 Reporting Services 포털에 배포할 수 있습니다.
답변2
너5월이를 위해 Word의 DATABASE 필드를 사용할 수 있습니다. 삽입을 위한 대화 상자는 리본에 없으므로 Word 옵션에서 찾아 QAT 등에 넣어야 합니다. 그러나 한두 가지 문제가 있으므로 필드를 수동으로 삽입하는 것이 더 나을 것입니다. Ctrl-F9를 사용하여 특수 필드 중괄호 코드 쌍을 삽입하면
{ }
(이 중괄호를 키보드로 입력할 수는 없습니다).
그런 다음 { } 사이의 모든 내용은 일반 텍스트입니다. Excel 문서가 c:\xl\mywb.xlsx이고 데이터가 Sheet1$이라는 시트에 있고 Field1, Field2 및 Field3이라는 3개의 필드가 있다고 가정해 보겠습니다. 그러면 첫 번째 DATABASE 필드는 다음과 같습니다.
{ DATABASE \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }
경로 이름에 이중 백슬래시가 있다는 점에 유의하십시오. 입력한 후 필드를 선택하고 F9를 눌러 실행한 다음 Alt-F9를 사용하여 결과를 확인하세요. 첫 번째 열에 필요한 내용에 가깝다면 괜찮을 것입니다. 그렇지 않다면 이 접근 방식을 포기하는 것이 좋습니다. 오류가 보고된다면 오타 때문일 가능성이 높습니다.
하나의 열이 작동하게 되면 데이터베이스 필드를 복사하여 붙여넣고 이름을 변경하십시오.
{ DATABASE \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }
{ DATABASE \d "C:\\xl\\mywb.xlsx" \s "SELECT cf2.[field2] FROM [Sheet1$] cf2 WHERE ((cf2.[field2] IS NOT NULL ))" \h }
그런 다음 F9, Alt-F9를 다시 선택하십시오. 모든 것이 정상이면 나머지 필드에 대해서도 반복합니다.
몇 가지 참고사항:
WHERE ((cf2.[field2] IS NOT NULL ))는 열의 셀 수가 서로 다르다는 사실을 처리하기 위해 존재합니다. 하지만 그 이상이 필요할 수도 있으며 이 기술을 사용하면모두열 아래쪽의 빈 셀뿐만 아니라 빈 셀도 있습니다.
\h는 열 헤더만 추가합니다.
"cf1", "cf2"는 SQL "TABLE 별칭 이름"입니다. 필요에 따라 이를 만들 수 있습니다. 필요하지는 않지만 별칭 이름을 삽입하지 않는 DATABASE 필드 대화 상자를 사용하여 이러한 필드를 삽입하려고 하면 발견할 수 있으므로 별칭이 없으면 Word가 약간 혼란스러워지는 경향이 있기 때문에 존재합니다.