我有一个共享点Doc Set。 它是一个模板,需要合并的1到n doc。
我正在使用Here
中的代码在altChunks“分配数据”之前,所有东西都在游戏中工作(虽然它写了一个必须打开“打开并且REpair”的损坏文件,但我在另一个问题中解决了这个问题。
模板文档在内存中打开而不是“直接”或“就地”,因为它是一个使用Open XML的共享点文件(我猜??)。内存流正在进行“开放二进制”写入,但我似乎无法在altChunk中找到一个位置来验证FeedData是否正常工作....在InsertAfter中,altchunk内部文本为“”(空)< / p>
为每个要添加的文件调用以下代码: void AddAltChunk(MainDocumentPart mainPart,Word.SdtElement sdt,SPFile filename,bool LastPass) { string altChunkId =“AltChunkId”+ id; ID ++; byte [] byteArray = filename.OpenBinary();
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (MemoryStream mem = new MemoryStream())
{
mem.Write(byteArray, 0, (int)byteArray.Length); //mem.length grows after this
mem.Seek(0, SeekOrigin.Begin);
chunk.FeedData(mem); //dunno if this workin
}
Word.AltChunk altChunk = new Word.AltChunk();
altChunk.Id = altChunkId;
//Replace content control with altChunk information
DocumentFormat.OpenXml.OpenXmlElement parent = sdt.Parent;
parent.InsertAfter(altChunk, sdt); //altChunk "inner text" is empty (just guessing that it should have the info to be written)
if (LastPass) { sdt.Remove(); }
}
那么这里就是“写”部分......它写出了一个包含原始模板的文件,但没有文件中的文本被认为是合并的。
其他无关信息: 代码说使用“template dotx”启动,然后写“doc docx”...这使得文件无法打开或修复。 我将模板修改为DOCX,并且我得到一个可以使用“打开并修复”打开的损坏文件。 这些文件属于我所制作的“内容类型”。应用于teh库,所以当他们点击“新”时,他们得到一个空白的那个文档(带有一些内容控件)....这使得1到多个文档被合并......我想知道内容控制是否是麻烦?...虽然我在那里放了一个没有CC的“常规”文档和一行“一般文本”,甚至没有“合并”。
FLumuxed。而且我(很明显是你的专业人士)是C#的新手,所以跟我说话,就像我7岁那样:)