में मर्ज करें मेरे पास लगभग 10 शब्द दस्तावेज़ हैं जो मैं खुले एक्सएमएल और अन्य सामान का उपयोग करके उत्पन्न करता हूं। अब मैं एक और शब्द दस्तावेज़ बनाना चाहता हूं और एक-एक करके मैं इन नव निर्मित दस्तावेज़ में शामिल होना चाहता हूं। मैं खुले एक्सएमएल का उपयोग करना चाहता हूं, किसी भी संकेत की सराहना की जाएगी।एकाधिक शब्द दस्तावेज़ों को एक ओपन एक्सएमएल
private void CreateSampleWordDocument()
{
//string sourceFile = Path.Combine("D:\\GeneralLetter.dot");
//string destinationFile = Path.Combine("D:\\New.doc");
string sourceFile = Path.Combine("D:\\GeneralWelcomeLetter.docx");
string destinationFile = Path.Combine("D:\\New.docx");
try
{
// Create a copy of the template file and open the copy
//File.Copy(sourceFile, destinationFile, true);
using (WordprocessingDocument document = WordprocessingDocument.Open(destinationFile, true))
{
// Change the document type to Document
document.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
//Get the Main Part of the document
MainDocumentPart mainPart = document.MainDocumentPart;
mainPart.Document.Save();
}
}
catch
{
}
}
अद्यतन (AltChunks उपयोग करते हुए): नीचे मेरी कोड है
using (WordprocessingDocument myDoc = WordprocessingDocument.Open("D:\\Test.docx", true))
{
string altChunkId = "AltChunkId" + DateTime.Now.Ticks.ToString().Substring(0, 2) ;
MainDocumentPart mainPart = myDoc.MainDocumentPart;
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(
AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open("D:\\Test1.docx", FileMode.Open))
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body.Elements<Paragraph>().Last());
mainPart.Document.Save();
}
क्यों इस कोड को अधिलेखित कर देता है पिछले फ़ाइल जब मैं एक से अधिक फ़ाइलों का उपयोग की सामग्री? अद्यतन 2:
using (WordprocessingDocument myDoc = WordprocessingDocument.Open("D:\\Test.docx", true))
{
MainDocumentPart mainPart = myDoc.MainDocumentPart;
string altChunkId = "AltChunkId" + DateTime.Now.Ticks.ToString().Substring(0, 3);
AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.WordprocessingML, altChunkId);
using (FileStream fileStream = File.Open("d:\\Test1.docx", FileMode.Open))
{
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body
.Elements<Paragraph>().Last());
mainPart.Document.Save();
}
using (FileStream fileStream = File.Open("d:\\Test2.docx", FileMode.Open))
{
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body
.Elements<Paragraph>().Last());
}
using (FileStream fileStream = File.Open("d:\\Test3.docx", FileMode.Open))
{
chunk.FeedData(fileStream);
AltChunk altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document
.Body
.InsertAfter(altChunk, mainPart.Document.Body
.Elements<Paragraph>().Last());
}
}
इस कोड Test2 डेटा दो बार Test1 डेटा के स्थान पर साथ ही जोड़कर है। मतलब मैं:
Test
Test2
Test2
के बजाय:
Test
Test1
Test2
chirs जैसा बताया इसके बजाय, आप एक इस तरह एसडीके द्वारा उत्पन्न हो , आप सभी AltChunk के लिए एक ही आईडी का उपयोग कर रहे हैं। वे अद्वितीय होना चाहिए। – Flowerking
ठीक है, अब यह किया गया है, मेरे साथ धैर्य बनाए रखने के लिए धन्यवाद। –
मुझे यह देखने में खुशी है कि आपने अंततः अपनी समस्या हल की है :) हाँ, यह Altchunkid से संबंधित था। मैंने अपना जवाब संपादित कर दिया है क्योंकि यह शायद बहुत स्पष्ट नहीं था। – Chris