문제가 있습니다.C#으로 도트 템플릿 조작
고객이 제공 한 .dotx 파일을 가지고 있습니다. 여기에는 Word에서 개발자 모드에 추가 된 다양한 종류의 필드가 포함되어 있습니다.
이 도트를 사용하여 값으로 채울 수 있기를 원합니다.
C# 코드에서 어떻게합니까?
문제가 있습니다.C#으로 도트 템플릿 조작
고객이 제공 한 .dotx 파일을 가지고 있습니다. 여기에는 Word에서 개발자 모드에 추가 된 다양한 종류의 필드가 포함되어 있습니다.
이 도트를 사용하여 값으로 채울 수 있기를 원합니다.
C# 코드에서 어떻게합니까?
Microsoft OpemXML SDK를 사용하면 C#을 사용하여 docx/dotx 파일을 조작 할 수 있습니다. here에서 Microsoft OpenXML SDK를 다운로드 할 수 있습니다.
먼저 dotx 파일의 복사본을 만들어야합니다. 그런 다음 템플릿에서 필드/컨텐츠 소유자를 찾습니다.
// First, create a copy of your template.
File.Copy(@"c:\temp\mytemplate.dotx", @"c:\temp\test.docx", true);
using (WordprocessingDocument newdoc = WordprocessingDocument.Open(@"c:\temp\test.docx", true))
{
// Change document type (dotx->docx)
newdoc.ChangeDocumentType(WordprocessingDocumentType.Document);
// Find all structured document tags
IEnumerable<SdtContentRun> placeHolders = newdoc.MainDocumentPart.RootElement.Descendants<SdtContentRun>();
foreach (var cp in placeHolders)
{
var r = cp.Descendants<Run>().FirstOrDefault();
r.RemoveAllChildren(); // Remove children
r.AppendChild<Text>(new Text("my text")); // add new content
}
}
예는 상술 한 매우 간단한 예이다
여기 (리치 텍스트 박스 콘텐츠 필드 간단한 워드 템플릿을 사용하는) 작은 예이다. 단어 템플릿 구조에 맞춰야합니다.
희망. 도움이됩니다.
나는 어제 이것을 발견했다. 그리고 나는 그것이 내가 가지고있는 것에 꽤 멋지게 일했다. http://midnightprogrammer.net/post/Word-Automation-in-C.aspx 하지만 이것도 보게 될 것입니다. 더 잘 작동 할 것입니다. 감사! – Wondermoose
함께 일할 수있는 것에 대한 제한이 있습니까? 예를 들어 프로그램을 실행할 서버/클라이언트에 Office를 설치 하시겠습니까? –
음, 나는 서버/클라이언트에 사무실 등을 설치할 수 있습니다. 그러나 중요한 것은 데이터가 데이터베이스 또는 웹 폼에서 온다는 것입니다. 따라서 완성 된 문서를 생성하려면 코드에서 dotx를 조작 할 수 있어야합니다. – Wondermoose
@Bali C, 지적 해 주셔서 고맙습니다. – Wondermoose