나는 워드 문서를 템플릿으로 사용하며 자리 표시자를 대체하려고합니다. # 여러 줄의 텍스트로 주소를 지정하십시오. Environment.NewLine이 무시된다는 점을 제외하면 작동합니다. 그렇다면 각 줄마다 줄 바꿈을 넣으려면 어떻게해야합니까? 코드에서 addressLines은 쉼표와 표준 새 줄 상수로 구분 된 컬렉션의 각 줄로 구성된 문자열임을 지적해야합니다.Word interop; 일부 텍스트를 줄 바꿈으로 바꾸기
public static void PrintAddress(string companyName, List<string> lines, string outputFolder)
{
// TODO put in linebreak for each line of the address
lines.Insert(0, companyName);
var lineEnd = "," + Environment.NewLine;
var addressLines = string.Join(lineEnd, lines.ToArray());
var application = new Application();
var path = Path.Combine(HttpContext.Current.Server.MapPath(AppSettings.UploadFolder), SessionObjectsSCD.UploadedFile.FileName);
var document = application.Documents.Open(path);
WordDocumentClass.FindAndReplace(document, "#ADDRESS", addressLines);
object filename = string.Format("{0}/{1}.docx", outputFolder, companyName);
document.SaveAs(ref filename);
// TODO print document
application.Quit();
}
public static void FindAndReplace(Document document, string placeHolder, string newText)
{
object missingObject = null;
object item = WdGoToItem.wdGoToPage;
object whichItem = WdGoToDirection.wdGoToFirst;
object replaceAll = WdReplace.wdReplaceAll;
object forward = true;
object matchAllWord = true;
object matchCase = false;
object originalText = placeHolder;
object replaceText = newText;
document.GoTo(ref item, ref whichItem, ref missingObject, ref missingObject);
foreach (Range rng in document.StoryRanges)
{
rng.Find.Execute(
ref originalText,
ref matchCase,
ref matchAllWord,
ref missingObject,
ref missingObject,
ref missingObject,
ref forward,
ref missingObject,
ref missingObject,
ref replaceText,
ref replaceAll,
ref missingObject,
ref missingObject,
ref missingObject,
ref missingObject);
}
}