여러 줄 서식을 따르는 콘텐트 컨트롤을 얻는데 어려움이 있습니다. 그것은 문자 그대로 모든 것을 해석하는 것 같습니다. OpenXML을 처음 접했을 때 나는 뭔가 간단한 것을 놓치고 있어야 할 것 같은 기분입니다.OpenXML을 사용하여 서식있는 텍스트 콘텐트 컨트롤에 여러 줄의 텍스트 삽입
이 함수를 사용하여 다중 행 문자열을 변환합니다.
private static void parseTextForOpenXML(Run run, string text)
{
string[] newLineArray = { Environment.NewLine, "<br/>", "<br />", "\r\n" };
string[] textArray = text.Split(newLineArray, StringSplitOptions.None);
bool first = true;
foreach (string line in textArray)
{
if (!first)
{
run.Append(new Break());
}
first = false;
Text txt = new Text { Text = line };
run.Append(txt);
}
}
나는 나뿐만 아니라 InnerXML 및 OuterXML을 시도했습니다 있지만
doc.InsertText("Primary", primaryRun.InnerText);
... 내가 좋아하는 뭔가를 호출이
public static WordprocessingDocument InsertText(this WordprocessingDocument doc, string contentControlTag, string text)
{
SdtElement element = doc.MainDocumentPart.Document.Body.Descendants<SdtElement>().FirstOrDefault(sdt => sdt.SdtProperties.GetFirstChild<Tag>().Val == contentControlTag);
if (element == null)
throw new ArgumentException("ContentControlTag " + contentControlTag + " doesn't exist.");
element.Descendants<Text>().First().Text = text;
element.Descendants<Text>().Skip(1).ToList().ForEach(t => t.Remove());
return doc;
}
와 컨트롤에 삽입합니다. 결과는
예 AttnExample CompanyExample AddressNew 뉴욕, NY 12345 또는
<w:r xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:t>Example Attn</w:t><w:br /><w:t>Example Company</w:t><w:br /><w:t>Example Address</w:t><w:br /><w:t>New York, NY 12345</w:t></w:r>
방법은 간단한 텍스트 삽입 잘 작동 같은 모양. 그것은 나를 위해 작동하지 않는 XML을 해석하는 데 필요할 때입니다.
나는 내가 필요한 것을 얻는 것에 가까워 질 것 같은 느낌이 들지만, 내 바이올린은 나를 아무데도 보내지 않습니다. 이견있는 사람? 고맙습니다.