דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. עוצו עצה בפרפואמנס - וורד

עוצו עצה בפרפואמנס - וורד

מתוזמן נעוץ נעול הועבר ארכיון code613m
11 פוסטים 4 כותבים 757 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מחובר
    dovidD מחובר
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #2

    לדעתי הבעיה נעוצה באוטומציה עם וורד, אתה חייב לעבוד עם OpenXml.
    הEnum הוא למעשה int וגם אם לא זה פשוט הבדל אפסי שבאפסיים לעניין המקרה שלך.

    אם OpenXml חדש לך, אז בכל מקרה יש לך שיעורי בית נדרשים.
    אם אתה מכיר קצת תתחיל מהלינקים הללו:

    https://blogs.msdn.microsoft.com/microsoft_press/2016/06/27/from-the-mvps-comparing-open-xml-documents-without-automating-word/

    אשמח להיות לך לעזר, ואם תעלה מסמך דוגמה עם הוראות מה הפלט הנדרש אשחק את מה שאני יצליח ורווחא שמעתתא.

    פורסם במקור בפורום CODE613 ב08/09/2017 10:03 (+03:00)

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    3
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #3

      גם את הכותרת אתה צריך לשנות מוורד לאוטומציה, זה הבאג הגדול.

      פורסם במקור בפורום CODE613 ב08/09/2017 10:05 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • נתנאלנ מנותק
        נתנאלנ מנותק
        נתנאל
        כתב ב נערך לאחרונה על ידי
        #4

        ההנתי שכל העינן הזה הוא לקחת את הוורד, בפורמט האקסמלי שלו, לשנות שם את הדברים והם אחרי זה ישתקפו במסמך. וזאת מכיון שהXML הוא כמו עמוד הדרה של המסמך ושם כתוב כל הפרטים שלו. בנתיים אני צריך לשנות את הטקסט של כל השוואה, אז יש לי את הקוד הבא, אבל אני לא מצליח לשנות את זה הוא אומר לי שזה לקריאה בלבד. יש כאן איזה שיטה או משהו?

        var fileName = @"C:\Users\Admin\Desktop\compare.docx";
                    using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(fileName, true))
                    {
                        
                        Body body = wdDoc.MainDocumentPart.Document.Body;
        
                        List<OpenXmlElement> deletions =
             body.Descendants<DeletedText>().Cast<OpenXmlElement>().ToList();
                        foreach (var item in deletions)
                        {
                        
                          
                          item.InnerXml = "@30 " + item.InnerXml + "@40";
                        
                        }
                        wdDoc.Save();
                    
                    }
                }
        

        פורסם במקור בפורום CODE613 ב10/09/2017 16:06 (+03:00)

        הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
        https://programing-tips.web.app/

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #5

          זה השגיאה שאתה מקבל? לפי מה שאני רואה אין בכלל מתודת Save לWordprocessingDocument, כך שלכאורה הקוד שלך לא בר קימפול.
          תנסה ככה:

          wdDoc.MainDocumentPart.Document.Save();
          

          פורסם במקור בפורום CODE613 ב10/09/2017 16:47 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • נתנאלנ מנותק
            נתנאלנ מנותק
            נתנאל
            כתב ב נערך לאחרונה על ידי
            #6

            זה נופל עוד לפני השמירה.
            זה השגיאה

            Additional information: This OpenXmlLeafElement's InnerXml can only be set to null or to an empty string.

            פורסם במקור בפורום CODE613 ב10/09/2017 17:08 (+03:00)

            הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
            https://programing-tips.web.app/

            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #7

              אולי האובייקט DeletedText לא ניתן לעריכה, לא יודע.

              פורסם במקור בפורום CODE613 ב10/09/2017 17:23 (+03:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              0
              • נתנאלנ מנותק
                נתנאלנ מנותק
                נתנאל
                כתב ב נערך לאחרונה על ידי
                #8

                אני אדם אחר עכשיו.
                זהו. היה עבר ועכשיו הווה. מצאתי איך זה עובד. מכוער ככל זה נראה אבל זה הפתרון שבסופו של יום עובד. אני אפייה את זה - לא אוציא את זה ככה ללקוח, אבל מרוב התלהבות אני חייב לשתף כעת. באמת אי אפשר לשנות אותו ישירות, צריך למחוק אותו ולהוסיף חדש.
                זה פשוט עולם חדש, אני בהלם מהמהירות. ותודה אישית לדוד, שהכיר לי את העולם הזה שנקרא openXml (מלבד הישועות הפזורות למכביר)
                (מה שכן, הוא מוסיף את זה כטקסט בלבד ולא שומר על זה כרוויזיה, כעת זה טוב לי.)

                var fileName = @"C:\Users\Admin\Desktop\ השוואה.docx";
                            using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(fileName, true))
                            {
                                
                                Body body = wdDoc.MainDocumentPart.Document.Body;
                
                                List<OpenXmlElement> insrtets =
                     body.Descendants<InsertedRun>().Cast<OpenXmlElement>().ToList();
                                List<Run> run = new List<Run>();
                
                                foreach (var item in insrtets)
                                {
                                    run.AddRange(item.Descendants<Run>().ToList());
                            
                                }
                
                                foreach (var run2 in run)
                                {
                                    string innerText = run2.InnerText;
                                 string   modifiedString = run2.InnerText.Replace(innerText, "@10" + innerText +"@20");
                                    
                                        Text t = new Text(modifiedString);
                                        run2.RemoveAllChildren<Text>();
                                        run2.AppendChild<Text>(t);
                                  
                                }
                

                פורסם במקור בפורום CODE613 ב10/09/2017 21:50 (+03:00)

                הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
                https://programing-tips.web.app/

                תגובה 1 תגובה אחרונה
                2
                • א מנותק
                  א מנותק
                  ארכיטקט
                  כתב ב נערך לאחרונה על ידי
                  #9

                  @נתנאל

                  אני אדם אחר עכשיו.
                  זהו. היה עבר ועכשיו הווה. מצאתי איך זה עובד.

                  הדרמטיות שלך מאוד חיננית, אופייני לאנשים בצעדיהם הראשונים.
                  יש לי רק דבר אחד לומר לך, אם יש בך כל כך הרבה אנרגיה ואהבת המקצוע, מה לך אצל וורד, כלך לך אצל מערכות מידע, עתידך מובטח.

                  פורסם במקור בפורום CODE613 ב10/09/2017 23:37 (+03:00)

                  אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

                  תגובה 1 תגובה אחרונה
                  1
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #10

                    @ארכיטקט

                    @נתנאל
                    אני אדם אחר עכשיו.

                    זהו. היה עבר ועכשיו הווה. מצאתי איך זה עובד.

                    הדרמטיות שלך מאוד חיננית, אופייני לאנשים בצעדיהם הראשונים.
                    יש לי רק דבר אחד לומר לך, אם יש בך כל כך הרבה אנרגיה ואהבת המקצוע, מה לך אצל וורד, כלך לך אצל מערכות מידע, עתידך מובטח.

                    כשתגמור מערכות מידע ניפגש בוורד, ותפתיע גם עם דרמטיות חיננית 🙂

                    פורסם במקור בפורום CODE613 ב11/09/2017 01:46 (+03:00)

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    0
                    • S מנותק
                      S מנותק
                      softs
                      כתב ב נערך לאחרונה על ידי
                      #11

                      הדוגמה שהובאה משתמשת ב DOM שזו הדרך הקלה ביותר אמנם לטפל בקובץ OpenXML ואף היעילה ביותר עבור קריאה של קובץ ברוב המקרים,
                      לעומת זאת ביצירה של קבצים בני מיליוני שורות (אקסל לדוגמה אבל לא רק) גישת ה SAX היא העוצמתית ביותר מבחינת ביצועים.
                      וארכיטקט יכול להיות לי פה תנא דמסייע...
                      https://blogs.msdn.microsoft.com/brian_jones/2010/06/22/writing-large-excel-files-with-the-open-xml-sdk

                      פורסם במקור בפורום CODE613 ב11/09/2017 14:20 (+03:00)

                      תגובה 1 תגובה אחרונה
                      3

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום