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

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

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

להשתמש בקובץ אקסל עם נוסחאות כAPI

מתוזמן נעוץ נעול הועבר תכנות
19 פוסטים 4 כותבים 458 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • D davidnead

    יש לי קובץ אקסל, מורכב מאוד, עם הרבה נוסחאות. בסופו של דבר זה קלט-פלט כמו כל תכנה. יש אפשרות להזין נתונים בתאים מסויימים, ולאחר שרשרת ארוכה של נוסחאות מתקבל בסוף פלט בתא אחר.
    אני רוצה לגשת לזה באמצעות JS, ולהשתמש בזה דינמית ולא סטטית. כלומר שאוכל ממש להזין נתון בתא שאמור להיות קלט, ואז לקרוא את התוצאה שחושבה כעת בתא הפלט.

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

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

    תודה רבה

    אפר שריפהא מנותק
    אפר שריפהא מנותק
    אפר שריפה
    כתב ב נערך לאחרונה על ידי
    #7

    @davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה

    D תגובה 1 תגובה אחרונה
    1
    • אפר שריפהא אפר שריפה

      @davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה

      D מנותק
      D מנותק
      davidnead
      כתב ב נערך לאחרונה על ידי
      #8

      @אפר-שריפה אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

      @davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה

      שיטס - זה גדול עליו. אקסל אונליין, לא מכיר. ואיך זה יכול לעזור? יש להם API?

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

        עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

        yossizY תגובה 1 תגובה אחרונה
        0
        • D davidnead

          @אפר-שריפה אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

          @davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה

          שיטס - זה גדול עליו. אקסל אונליין, לא מכיר. ואיך זה יכול לעזור? יש להם API?

          WWWW מנותק
          WWWW מנותק
          WWW
          כתב ב נערך לאחרונה על ידי
          #10

          @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

          שיטס - זה גדול עליו.

          מה הכוונה?

          @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

          עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

          אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.

          WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

          D תגובה 1 תגובה אחרונה
          0
          • D davidnead

            עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

            yossizY מנותק
            yossizY מנותק
            yossiz
            כתב ב נערך לאחרונה על ידי
            #11

            @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

            עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

            כלומר ווינדוס? אם כן מה לא טוב ברעיון שלי?

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            D תגובה 1 תגובה אחרונה
            0
            • yossizY yossiz

              @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

              עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

              כלומר ווינדוס? אם כן מה לא טוב ברעיון שלי?

              D מנותק
              D מנותק
              davidnead
              כתב ב נערך לאחרונה על ידי
              #12

              @yossiz ככל שהבנתי הספריה ההיא לא תומכת ב64 סיביות.

              yossizY תגובה 1 תגובה אחרונה
              0
              • WWWW WWW

                @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                שיטס - זה גדול עליו.

                מה הכוונה?

                @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

                אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.

                D מנותק
                D מנותק
                davidnead
                כתב ב נערך לאחרונה על ידי
                #13

                @www אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                שיטס - זה גדול עליו.

                מה הכוונה?

                @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

                אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.

                מדוב בקובץ אקסל קיים, מאוד מאוד מורכב. עושה עבודה שלא מביישת שום ספריה בNPM (למעשה יש שם כמה ספריות שעושות עבודה דומה, חלקית לפחות). הוא משתמש בתאים בתור משתנים ובתאים שמכילים נוסחאות מתור פונקציות, קובץ ענק ומושקע מאוד. הקובץ הזה אין עיקרו נתונים אלא הוא סוג של תכנה, מקבל קלט ומחזיר קלט. הוא גם כבד מאוד (130MB). שיטס לא מצליח לפתוח אותו, וזה לא מפתיע. גם ספריות שונות שניסיתי לסוגים מסוימים של פתרונות לא הצליחו להתמודד עם הקובץ הספציפי הזה.
                לכו נראה לי הפתרון הכי הגיוני (בהתאם למציאות הלא הגיונית...) זה להפעיל באיזו צורה את האקסל עצמו, הכיוון של @yossiz נשמע טוב אם יש לו מימושים.

                תגובה 1 תגובה אחרונה
                1
                • D davidnead

                  @yossiz ככל שהבנתי הספריה ההיא לא תומכת ב64 סיביות.

                  yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי
                  #14

                  @davidnead לא!
                  השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
                  גם 64 סיביות נתמך.

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  D תגובה 1 תגובה אחרונה
                  0
                  • yossizY yossiz

                    @davidnead לא!
                    השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
                    גם 64 סיביות נתמך.

                    D מנותק
                    D מנותק
                    davidnead
                    כתב ב נערך לאחרונה על ידי
                    #15

                    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                    @davidnead לא!
                    השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
                    גם 64 סיביות נתמך.

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

                    yossizY תגובה 1 תגובה אחרונה
                    0
                    • D davidnead

                      @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                      @davidnead לא!
                      השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
                      גם 64 סיביות נתמך.

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

                      yossizY מנותק
                      yossizY מנותק
                      yossiz
                      כתב ב נערך לאחרונה על ידי yossiz
                      #16

                      @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

                      📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                      D תגובה 1 תגובה אחרונה
                      4
                      • yossizY yossiz

                        @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

                        D מנותק
                        D מנותק
                        davidnead
                        כתב ב נערך לאחרונה על ידי
                        #17

                        @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                        @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

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

                        בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:

                        "engines": {
                            "node": ">= 0.8.18 && < 0.9.0"
                          },
                        

                        אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)

                        D תגובה 1 תגובה אחרונה
                        0
                        • D davidnead

                          @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                          @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

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

                          בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:

                          "engines": {
                              "node": ">= 0.8.18 && < 0.9.0"
                            },
                          

                          אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)

                          D מנותק
                          D מנותק
                          davidnead
                          כתב ב נערך לאחרונה על ידי
                          #18

                          @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                          @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

                          @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

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

                          בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:

                          "engines": {
                              "node": ">= 0.8.18 && < 0.9.0"
                            },
                          

                          אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)

                          טוב, יישר כוח גדול. נמצא הפתרון:
                          https://www.npmjs.com/package/winax
                          ובבדיקה ראשונית הוא נותן תוצאה משביעת רצון, שכיוונים אחרים לא נתנו.
                          אותו הפתרון, רק ספריה עדכנית יותר. כרגיל, יוסי צודק, רק לוקח זמן להבין את זה, ובמקרה הזה גם למצוא את המימוש הנכון.

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

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

                            const winax = require("winax");
                            
                            const fileName = `...\\tst.xlsx`;
                            
                            const excel = new winax.Object("Excel.Application", { activate: true });
                            const wbk = excel.Workbooks.Add(fileName);
                            const input = wbk.Worksheets.Item(1).Range("A1");  
                            const B1 = wbk.Worksheets.Item(1).Range("B1");  
                            const output = wbk.Worksheets.Item(1).Range("C1"); 
                            
                            console.log(input.Value.valueOf()); //1
                            console.log(B1.Value.valueOf()); //2
                            console.log(output.Value.FormulaLocal); //=A1+B1
                            console.log(output.Value.valueOf()); //3
                            input.Value = 2;
                            console.log(output.Value.valueOf()); //4
                            

                            נ.ב. הגליונות ממוספרים מ1, לא מ0.

                            תגובה 1 תגובה אחרונה
                            4
                            • dovidD dovid העביר נושא זה מ-תכנות ב-
                            תגובה
                            • תגובה כנושא
                            התחברו כדי לפרסם תגובה
                            • מהישן לחדש
                            • מהחדש לישן
                            • הכי הרבה הצבעות


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

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

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