-
@אפר-שריפה אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
@davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה
שיטס - זה גדול עליו. אקסל אונליין, לא מכיר. ואיך זה יכול לעזור? יש להם API?
-
@davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
שיטס - זה גדול עליו.
מה הכוונה?
@davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.
אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.
-
@davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.
כלומר ווינדוס? אם כן מה לא טוב ברעיון שלי?
-
@www אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
@davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
שיטס - זה גדול עליו.
מה הכוונה?
@davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.
אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.
מדוב בקובץ אקסל קיים, מאוד מאוד מורכב. עושה עבודה שלא מביישת שום ספריה בNPM (למעשה יש שם כמה ספריות שעושות עבודה דומה, חלקית לפחות). הוא משתמש בתאים בתור משתנים ובתאים שמכילים נוסחאות מתור פונקציות, קובץ ענק ומושקע מאוד. הקובץ הזה אין עיקרו נתונים אלא הוא סוג של תכנה, מקבל קלט ומחזיר קלט. הוא גם כבד מאוד (130MB). שיטס לא מצליח לפתוח אותו, וזה לא מפתיע. גם ספריות שונות שניסיתי לסוגים מסוימים של פתרונות לא הצליחו להתמודד עם הקובץ הספציפי הזה.
לכו נראה לי הפתרון הכי הגיוני (בהתאם למציאות הלא הגיונית...) זה להפעיל באיזו צורה את האקסל עצמו, הכיוון של @yossiz נשמע טוב אם יש לו מימושים. -
@yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
@davidnead לא!
השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
גם 64 סיביות נתמך.אה, לא אמרתי את זה רק בגלל השם. אלא שבגלל שבהתקנת הספריה קיבלתי שגיאה שהיא לא מתאימה לפלטפורמה או משהו כזה. אבל אם אתה אומר שזה כן אמור לתמוך אז אנסה לבדוק יותר לעומק.
-
@yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:
@davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.
אני די בור בכלים של מיקרוסופט. בגדול, הם מספקי כלי שמאפשר יצירת תוספות לאופיס שמכין לך לגמרי את כל התשתית ומשאיר לך רק לכתוב קצת JS, רק שהוא מיועד לתפעל ממשק מתוך האופיס. ככל שהבנתי מבחינה טכנית לא אמור להיות הבדל, רק שתכל'ס המימוש שלהם לא עושה את זה. תמיד אפשר לנסות לחפור בקוד שלהם...
בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:
"engines": { "node": ">= 0.8.18 && < 0.9.0" },
אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)
-
@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
ובבדיקה ראשונית הוא נותן תוצאה משביעת רצון, שכיוונים אחרים לא נתנו.
אותו הפתרון, רק ספריה עדכנית יותר. כרגיל, יוסי צודק, רק לוקח זמן להבין את זה, ובמקרה הזה גם למצוא את המימוש הנכון. -
והיות שאני בזבזתי יומיים כדי להגיע לתוצאה הזו, וניסיתי להעזר בהרבה אנשים בכמה פורומים (כמובן שפה היה הראשון וגם האחרון שתכל'ס עזר) - אתן אותה כשולחן ערוך למי שיבוא אחרי:
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.
-