2010-07-05 1 views
2

데이터베이스에서 찾을 수있는 특정 필드에 대해 사용자가 장소 소유자와 함께 Word 문서를 업로드 할 수 있도록해야합니다. 이것은 그들의 템플릿이 될 것입니다. 예를 들어, 자리 표시자는 @@ 또는 무엇인가를 앞에 붙일 수 있습니다. 예를 들어,MS Word는 ASP.Net 웹 응용 프로그램에서 Word 문서로 내보낼 수있는 기능과 비슷합니다.

Dear @@Title @@Lastname 

그런 다음 레코드를 가져 와서 Word 문서로 내보낼 수 있습니다. 그러면 템플릿을 선택할 수있게됩니다. 템플릿을 선택한 다음 계속을 클릭 할 수 있습니다. 그런 다음 템플릿을 가져오고 @@Title을 선택한 레코드의 데이터베이스 제목 필드로 바꿉니다. 어디서부터 시작해야하는지, 아니면 어떤 구성 요소가 필요한지 잘 모르겠습니다.

필자의 초기 조사에서 Office 2007의 새로운 개방형 XML 표준을 사용하여이 작업을 수행 할 수 있습니다. 따라서 아마도 템플릿을 읽고 어딘가에있는 모든 db 테이블에 모든 내용을 저장해야합니다. 그런 다음 사용하려고 할 때 콘텐츠를 다시 가져온 후 @@ 자리 표시자를 검색하고 바꿔서 올바르게 연결합니다. 그런 다음 문서를 출력 스트림에 다시 저장하면 브라우저에 저장 대화 상자가 나타납니다.

ASP.Net MVC를 사용하고 있으며 호스트 환경에 있습니다. 나는 또한 새로운 View 유형을 동적으로 생성하고 사용자가 템플릿을 업로드 할 때 동적으로 새로운보기를 작성하는 것을 고려 중이었습니다. 이 접근 방식이 제대로 작동하는지 확신 할 수 없습니다.

좋은 접근 방법입니까? 내가보고있는 도구는 무엇입니까? 다른 제안 사항이 있으십니까?

답변

3

이것은 워드 문서에 데이터를 삽입 한 다음 사용자에게 반환하는 방식과 비슷합니다. 우리는 추출하기 쉬운 zip 파일 인 .docx 파일을 열어 document.xml이라는 단어 폴더에서 문서를 추출하고 replace 한 다음 .docx 파일에 다시 넣은 다음 사용자에게 반환했습니다. .

우리가 썼던 한 가지 문제점은 이상한 장소에 삽입 된 태그, 특히 철자/문법 오류와 같은 것들 이었기 때문에 검색/교체를 할 때 조심해야했습니다.

문서를 쉽게 업데이트 할 수 있도록 데이터베이스의 필드를 저장하지 않기로 결정했습니다.

우리는 .DOCX 파일을 우리는 또한 다운로드의 수를 저장하는 하나의 큰 문서에 여러 문서를 결합하는 것이었다 않았다

뭔가를 여는 dotnetzip 구성 요소를 사용했다. 기억한다면 우리는 open xml toolkit을 사용하여이 병합을 수행했습니다. 웹 사이트에는 사용할 수있는 많은 다른 정보가 있습니다.

+0

이것은 좋은 대답입니다 (나는 upvote하지만 오늘은 투표에서 제외됩니다). Andy, 삽입물에 문제가있는 이유는 텍스트 범위 ('')가 철자 오류, 굵은 글씨체와 같은 이유로 손상 될 수 있기 때문입니다.이 문제를 해결하는 방법은 자리 표시 자에 대해 콘텐츠 컨트롤을 사용하는 것입니다. –

+0

@Otaku 그 덕분에 콘텐츠 컨트롤을 살펴볼 것입니다. –

+0

vote reset. +1. –

1

Microsoft에서 곧 나오는 "Razor"라는 새로운보기 엔진 코드에 대해 Scott Guthries blog post을 확인하십시오. 의견에서 ASP.NET MVC보기에 대해 이야기하는 것처럼 편지 병합 시나리오에서 사용할 수 있다는 것에 대한 이야기가 있습니다.