วาง DataObject ลงใน Word C#

ฉันกำลังพยายามวางข้อมูลจากคลิปบอร์ดลงในคำ ไม่ใช่แค่ข้อความ ฉันจัดการวางข้อความ RTF ได้ แต่ฉันก็ต้องการ pictures/links/etc ด้วย ข้อมูลที่ฉันกำลังคัดลอกมาจากเว็บไซต์ และโปรแกรมจำเป็นต้องวางข้อมูลดังกล่าวเหมือนกับว่าฉันกำลังกด CTRL-V ลงในเอกสาร

จากสิ่งที่ฉันเข้าใจ คลิปบอร์ดจะเก็บ DataObject และดูเหมือนว่าฉันไม่สามารถหาวิธีนำสิ่งเหล่านั้นไปไว้ในเอกสาร word ได้

ฉันไม่สนใจว่าจะใช้ doc หรือ docx อย่างใดอย่างหนึ่งก็ดี


person Maelo    schedule 28.08.2015    source แหล่งที่มา
comment
คุณช่วยแสดงสิ่งที่คุณได้ลองโซฟาร์หน่อยได้ไหม?   -  person varocarbas    schedule 28.08.2015
comment
@varocarbas ขณะนี้ฉันใช้ Novacode: var doc = DocX.Create(docLocation); doc.InsertParagraph(คลิปบอร์ด.GetText());   -  person Maelo    schedule 28.08.2015
comment
ขออภัย ฉันไม่มีประสบการณ์ในห้องสมุดเฉพาะแห่งนี้ ฉันได้เพิ่มแท็กที่เกี่ยวข้องเพื่อช่วยให้ผู้ตอบที่มีประสบการณ์พบคำถามของคุณ   -  person varocarbas    schedule 28.08.2015
comment
@varocarbas ขอบคุณแม้ว่าฉันจะไม่สนใจว่าฉันต้องใช้ไลบรารีใดเพื่อทำสิ่งนี้   -  person Maelo    schedule 28.08.2015
comment
หากคุณไม่สนใจไลบรารีใดโดยเฉพาะ คุณควรลองใช้ไลบรารีอื่น (หรือพึ่งพาฟังก์ชันการทำงานในตัว เช่น Interop.Word) คุณควรพยายามให้หนักกว่าการเขียนโค้ดสองสามบรรทัดเล็กน้อย ตัวอย่างเช่น เพียงใช้คลิปบอร์ด คุณจะมีตัวเลือกมากมาย (GetData, GetDataObject ฯลฯ)   -  person varocarbas    schedule 28.08.2015
comment
คุณควรแก้ไข และเพิ่มรายละเอียดเกี่ยวกับสิ่งที่คุณกำลังทำอยู่ (ขยายความคิดเห็นของคุณเล็กน้อย) คำถามของคุณดูไม่ตรงหัวข้อหากไม่มีคำถามนี้   -  person    schedule 28.08.2015
comment
อย่าใช้ Novacode-docx กับสิ่งที่คุณพยายามทำ   -  person Phillip    schedule 29.08.2015
comment
@phillip คุณจะแนะนำให้ใช้อะไร?   -  person Maelo    schedule 29.08.2015
comment
@varocarbas คลิปบอร์ดเป็นวิธีเดียวที่จะรับข้อมูลในรูปแบบที่เหมาะสม ฉันได้ลองใช้ไลบรารีอื่น ๆ หลายแห่งแล้ว แต่ไม่สามารถค้นหาสิ่งที่สามารถวางวัตถุข้อมูล (ได้มาจาก Clipboard.GetDataObject()) ลงในเอกสาร Word   -  person Maelo    schedule 29.08.2015
comment
@ ฉันไม่แน่ใจว่าจะเพิ่มอะไรอีก - ฉันได้เปลี่ยนชื่อเป็น Paste DataObject Into Word เพราะนั่นคือสิ่งที่ฉันพยายามทำ มันได้ผลเหรอ?   -  person Maelo    schedule 29.08.2015
comment
ดู? การทำแบบทดสอบ/วิจัยแทนที่จะถามทีละนิดเป็นการดำเนินการที่มีประสิทธิภาพมากกว่าเพื่อให้ได้สิ่งที่คุณต้องการ นอกจากนี้ โค้ดที่คุณเขียนตอนนี้ยังใกล้เคียงกับข้อกำหนดขั้นต่ำที่ต้องถามใน SO มาก (สองบรรทัดก่อนหน้าของคุณแทบไม่มีอะไรเลย) ยอมรับคำตอบของคุณเองว่าเป็นคำตอบที่ถูกต้องและเพลิดเพลินไปกับความรู้ใหม่ของคุณ   -  person varocarbas    schedule 29.08.2015
comment
@varocarbas ฉันค้นหาไปรอบ ๆ สองชั่วโมงก่อนที่จะถามคำถาม ฉันลองใช้ OpenXML และ Novacode แล้ว และมีโค้ดที่ล้มเหลวจำนวนมากซึ่งใช้งานไม่ได้ใน C# ดังนั้นฉันจึงไม่ได้รวมมันไว้ ฉันเข้าใจว่ามีคำถามมากมายที่เข้ามาที่นี่โดยไม่ได้พยายามอะไรมาก่อน นี่ไม่ใช่หนึ่งในนั้น ฉันไม่มีอะไรจะแสดงหลังจากความล้มเหลวมากมาย ฉันยังยอมรับคำตอบของตัวเองไม่ได้ ฉันจะทำมันเมื่อฉันทำได้   -  person Maelo    schedule 30.08.2015
comment
มีความสุขที่ได้อ่านสิ่งนั้น ไม่แน่ใจว่าทำไมคุณยังไม่สามารถยอมรับคำถามของคุณเองได้ ฉันคิดว่ามันเป็นคำตอบที่คุ้มค่าสำหรับคำถามนี้ รหัสไม่สมบูรณ์เล็กน้อย แต่ก็ดีเพียงพอสำหรับสิ่งที่ถูกถาม   -  person varocarbas    schedule 30.08.2015
comment
@varocarbas บอกฉันว่าฉันต้องรอ 24 ชั่วโมง ฉันเหลือเวลาอีก 13 นาทีเมื่อฉันตอบกลับ ขอบคุณสำหรับความช่วยเหลือ   -  person Maelo    schedule 30.08.2015


คำตอบ (1)


พบวิธีแก้ปัญหาโดยใช้ Microsoft.Office.Interop.Word:

                    object oMissing = System.Reflection.Missing.Value;
                    object oEndOfDoc = "\\endofdoc";
                    Word._Application oWord;
                    Word._Document oDoc;
                    oWord = new Word.Application();
                    oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
                        ref oMissing, ref oMissing);
                    Word.Paragraph oPara1;
                    oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
                    oPara1.Range.Paste();
                    oDoc.SaveAs(docOutput);
person Maelo    schedule 29.08.2015