
getDataFromExcelToObject ציבורית וסטטית, מחזירה מערך דו-מימדי, ומקבלת שני פרמטרים: נתיב הקובץ ושם הלשונית.FileInputStream עם נתיב הקובץ, ומעבירים אותו לאובייקט ה-Workbook של POI.getSheet.for, אחת לשורות ואחת לעמודות, ממלאים את התאים לפי הסדר.printStackTrace().הטקסט המלא של הדקות הראשונות בהרצאה «Data Driven Test עם Excel - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום, אז בשיעור הזה אנחנו נמשיך את השיעור הקודם ונתחיל להכין את המתודה שבעצם תקרא נתונים מאקסל ותאפשר לנו לשלוח את הנתונים האלה דרך המערך המימדי של הנתונים, האובג'ק דאטה לטסטים שלנו, לטסט שלנו ולהריץ אותו בצורה כזאתי שהוא ירוץ על כל הנתונים באקסל שורה שורה ויעשה את האיתרציות האלה
ויבדוק את המערכת שלנו בעזרת נתוני אקסל. אז כשאנחנו כותבים את המתודה שלנו, אנחנו נקבע שהיא תהיה מתודת public והיא תהיה גם static, היא לא תהיה דינמית והיא תחזיר את האובייקט של הדאטה, אובייקט המערך הדו-מימדי.
זאת אומרת, כל אקסל בעצם בסופו של דבר הוא מערך דו-מימדי. זאת אומרת, זה מערך חד-מימדי, אבל ברגע שאנחנו שולחים הרבה שורות, אז זה הופך אותו למערך דו-מימדי.
אז זו הדרך שלנו להעביר את הנתונים באובייקט דו-מימדי ואנחנו מצהירים על זה שזה יהיה התוצר של המתודה שלנו. נקרא למתודה שלנו getDataFromExcelToObject אוקיי, והנתונים שהיא תקבל אלה יהיו String שהם יהיו FilePath וגם יהיה לנו String שיגיד לנו את ה-shitName שאת אותו בתוך הקובץ אקסל שבהם
אנחנו מאחסנים את הנתונים שלנו. לדוגמה, בדוגמה שלנו זה שיט אחד, אז זה יהיה השם של הקובץ ובעצם מבחינתנו זה יהיה השם של אותה לשונית. אז בואו נמשיך בבניית המתודה שלנו ואחרי שהכרזנו על השם ועל הפרמטרים שאנחנו צריכים, אז אנחנו יכולים עכשיו להתחיל לבנות את המתודה.
האובייקט הראשון שאנחנו נרצה ליצור זה אובייקט שאנחנו מחזירים בעצם, שזה אובייקט דאטה, המערך הדו-מימדי, ונקרא לו טייבל אריי.
נתחיל אותו בנ"ל וגם נכתוב פה ריטרן את הטייבל אריי. אז זה נקודה פסיק וכבר יש לנו את המתודה חוקית, זאת אומרת המתודה כבר בנויה עם הפרמטרים הנכונים והיא גם מחזירה את התוצר שהתחייבנו לה להחזיר.
אוקיי, עכשיו מה שאנחנו צריכים לעשות זה בעצם להתחיל לבנות את המתודה שמתממשקת עם אקסל, היא מורכבת מכמה חלקים, החלק הראשון זה בעצם גישה לאותו קובץ אקסל שיצרנו.
שימו לב, הגישה היא לקובץ אקסל מסוג עם הסיומת xlsx ולא xls בלבד. אוקיי, אז זה בדוגמה שלנו, כרגע זה יהיה סוג קבצים, זה הקבצים הנפוצים, המחודשים יוצא.
לצורך כך אנחנו נצטרך את ה-file input stream, את אותו אובייקט שמתממשק עם סביבת העבודה שלנו במחשב ונקרא לו אקסל פייל. אנחנו יוצרים אינסטנט ל-file input stream, אקסל פייל שווה new file input אוקיי, ועל מנת שהוא ידע איזה קובץ הוא צריך, אנחנו נשלח לו את הפרמטר FilePath.
אוקיי, אז ה-Java מבקש מאיתנו לייבא את אותו אובייקט, אותו סוג אובייקט שיצרנו של ה-FileInputStream מתוך הספרייה של ה-Java, IO, Java Input Output, אוקיי?
אז אנחנו עושים את זה ואנחנו נוודא שאין לנו איזשהו טייפ או פה איזשהו שגיאת כתיב וכרגע זה בסדר. האזהרה פה היא אומרת שאנחנו צריכים להשתמש באותו אינסטנט שיצרנו אבל תכף אנחנו נעשה את זה.
האובייקטים הבאים שאנחנו נכיר זה אובייקטים בעצם ממש של האקסל עצמו ואנחנו צריכים להשתמש באינסטנט של פייל רוקבוק. יצרנו אינסטנט לאקסל שזה מתוך ספריות ה-POI, אותו POI שהורדנו מאתר של אפאצ'י על מנת להתממשק עם קבצי ה-Office ובמקרה שלנו ה-Office-Excel.
כאן אנחנו שולחים את ה-Excel פייל. אז היה לנו את השלב הראשון של התממשקות עם קובץ שזה דרך ה-Java וההתממשקות פה היא כבר דרך ה-POI. שימו לב דרך ה-POI.
אז יש לנו את השני שלבים האלה, וכרגע אנחנו כבר מגיעים עד הקובץ אקסל. עכשיו אנחנו צריכים להגיע ללשונית עצמה, ל-sheet עצמו של האקסל, אז יש לנו פה את האובייקט עצמו של הלשונית, והפעם אנחנו צריכים לשלוח לו, אנחנו שולחים לו פה get, האובייקט הזה של ה-sheet, ואז יהיה לנו פה, צריכים להשתמש ב,
יש לנו פה את פעולת ה-get sheet, שמבקש שניתן לו סטרינג של ה-sheet name, אוקיי? אז עכשיו אנחנו כבר הגענו עד ל-sheet עצמו של האקסל, בעצם הגענו ללשונית הזאתי.
מוקד שלנו זו הלשונית היחידה, אבל עדיין אנחנו צריכים לציין את הפרטים של הכתובת המדויקת, איפה נמצאים הנתונים שלנו. אז ציינו את המיקום, איפה נמצא הקובץ ואיפה הלשונית נמצאת, וכשאנחנו נרצה לקרוא על המתודה הזאת, אנחנו נצטרך לשלוח לתוכה גם את המסלול לקובץ וגם את השם של השיט נייט.
אז אוקיי, אנחנו צריכים לעשות Add Draw Declaration, גם פה את ה-Add Draw Declaration, זה במקרה שאנחנו לא נמצא את הקבצים עצמם, הג'אווה מבקשת מאיתנו להתייחס למצב הזה שאנחנו לא מוצאים את הקבצים.
אז בואו נציין פה באיזושהי הערה שכאן אנחנו יוצרים את הקבצים עצמם. Get to Excel, אוקיי? ופה אנחנו עכשיו צריכים להגיד איזה שהם משתנים שאומרים לנו את הגבולות גזרה שלנו, איפה נמצאים הנתונים בעצם.
אז לצורך העניין בדוגמה שלנו אנחנו נעשה את זה Hardcoded אבל יש דרכים לעשות את זה בצורה דינמית, זאת אומרת שאנחנו ננתח איפה באיזה תא נמצא באיזה תאים נמצאים נתונים אבל לצורך הדוגמה שלנו על מנת שזה יהיה פשוט נעשה את זה hardcoded ותכף אני אסביר range of data נקרא לזה זאת אומרת גבולות הנתונים ואנחנו נשתמש בind
נקרא לזה total row ובוא נגיד שזה יהיה 4. כמה יש לנו? כן יש לנו 4 אני מתעלם מהשורה הראשונה ואני מתעלם מהעמודה הראשונה ועדיין יש לנו ארבע נתונים, אז אני אומר total row זה יהיה ארבע ו-int צורך גם total call, זאת אומרת כמה עמודות סך הכל ויש לנו פה שלוש, שלוש עמודות, אני שוב
מתעלם מהעמודה a ומהשורה 1, אוקיי? זה מין מקום כזה שמור, ואני אראה לכם איך אנחנו קוראים את הנתונים האלה בלבד ולא את הכותרות.
אני לא צריך את הכותרות, הכותרות הן בשביל שהנתונים יהיו ברורים לצורך הדוגמה אבל אנחנו לא חייבים להשתמש בהם. אז בואו נמשיך ואנחנו עכשיו בשלב של להתחיל בעצם לרוץ על הנתונים באקסל ולהזין אותם לתוך האובג'קט דאטה. המטרה שלנו בעצם זה ליצור אובג'קט דאטה כמו שאנחנו יודעים לעבוד איתו בסלניום אבל שהנתונים ייזנו מהאקסל לתוך אותו Object Data, לתוך המערך הדו-מימדי.