עיבוד תמלילים של מיקרוסופט בג'אווה עם נקודות עניין של אפאצ'י

1. סקירה כללית

Apache POI היא ספריית Java לעבודה עם פורמטים שונים של קבצים המבוססים על תקני Office Open XML (OOXML) ועל פורמט OLE 2 של מיקרוסופט (OLE2).

מדריך זה מתמקד בתמיכה ב- Apache POI עבור Microsoft Word, פורמט הקובץ הנפוץ ביותר ב- Office. הוא עובר בשלבים הדרושים לעיצוב וליצירת קובץ MS Word וכיצד לנתח את הקובץ.

2. תלות Maven

התלות היחידה הנדרשת ל- IP של אפאצ'י לטיפול בקבצי MS Word היא:

 org.apache.poi poi-ooxml 3.15 

אנא לחץ כאן לגרסה האחרונה של חפץ זה.

3. הכנה

בואו נסתכל על כמה מהאלמנטים המשמשים להקלת יצירת קובץ MS Word.

3.1. קבצי משאבים

אנו אוספים את התוכן של שלושה קבצי טקסט ונכתוב אותם לקובץ MS Word - בשם מנוחה עם קפיץ.docx.

בנוסף logo-leaf.png קובץ משמש להכנסת תמונה לקובץ חדש זה. כל הקבצים הללו קיימים על מסלול הכיתה ומיוצגים על ידי כמה משתנים סטטיים:

לוגו מחרוזת סטטי ציבורי = "logo-leaf.png"; פיסקה מחרוזתית סטטית ציבורית = 1 = "poi-word-para1.txt"; פיסקה מחרוזתית סטטית ציבורית 2 = "poi-word-para2.txt"; פסיקה מחרוזת סטטית ציבורית 3 = "poi-word-para3.txt"; פלט מחרוזת סטטי ציבורי = "rest-with-spring.docx";

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

3.2. שיטת עוזר

השיטה העיקרית המורכבת מלוגיקה המשמשת ליצירת קובץ MS Word המתוארת בסעיף הבא, עושה שימוש בשיטת עוזר:

מחרוזת ציבורית convertTextFileToString (מחרוזת קובץ שם) {נסה (זרם זרם = Files.lines (Paths.get (ClassLoader.getSystemResource (fileName) .toURI ()))) {return stream.collect (Collectors.joining ("")); } לתפוס (IOException | URISyntaxException e) {return null; }}

שיטה זו מחלצת תכנים הכלולים בקובץ טקסט שנמצא בכיתה, ושמו הועבר חוּט טַעֲנָה. לאחר מכן הוא משרשר שורות בקובץ זה ומחזיר את ההצטרפות חוּט.

4. יצירת קבצי MS Word

סעיף זה מספק הוראות כיצד לעצב וליצור קובץ Microsoft Word. לפני שעובדים על חלק כלשהו בקובץ, עלינו להיות עם מסמך XWPF למשל:

מסמך XWPFDocument = XWPFDocument חדש ();

4.1. עיצוב כותרת וכתוביות

על מנת ליצור את הכותרת, ראשית עלינו ליצור את ה- XWPFParagraph וקבע את היישור על האובייקט החדש:

XWPFParagraph title = document.createParagraph (); title.setAlignment (ParagraphAlignment.CENTER);

את התוכן של פיסקה צריך לעטוף ב- XWPFRun לְהִתְנַגֵד. אנו עשויים להגדיר אובייקט זה לקביעת ערך טקסט וסגנונותיו המשויכים אליו:

XWPFRun titleRun = title.createRun (); titleRun.setText ("בנה את ה- API של REST שלך עם אביב"); titleRun.setColor ("009933"); titleRun.setBold (נכון); titleRun.setFontFamily ("שליח"); titleRun.setFontSize (20);

צריך להיות מסוגל להסיק את מטרות שיטות ההגדרה משמותיהן.

באופן דומה אנו יוצרים XWPFParagraph מופע המקיף את כותרת המשנה:

XWPFParagraph subTitle = document.createParagraph (); subTitle.setAlignment (ParagraphAlignment.CENTER);

בואו נעצב גם את כותרת המשנה:

XWPFRun subTitleRun = subTitle.createRun (); subTitleRun.setText ("מביסורי HTTP ל- Mastery API"); subTitleRun.setColor ("00CC44"); subTitleRun.setFontFamily ("שליח"); subTitleRun.setFontSize (16); subTitleRun.setTextPosition (20); subTitleRun.setUnderline (UnderlinePatterns.DOT_DOT_DASH);

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

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

4.2. הכנסת תמונה

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

XWPFParagraph image = document.createParagraph (); image.setAlignment (ParagraphAlignment.CENTER);

כך תגדיר את המרחק בין תמונה זו לטקסט שמתחתיה:

XWPFRun imageRun = image.createRun (); imageRun.setTextPosition (20);

תמונה נלקחת מקובץ שבמסלול הכניסה ואז מוחדרת לקובץ MS Word עם הממדים שצוינו:

נתיב imagePath = Paths.get (ClassLoader.getSystemResource (לוגו) .toURI ()); imageRun.addPicture (Files.newInputStream (imagePath), XWPFDocument.PICTURE_TYPE_PNG, imagePath.getFileName (). toString (), Units.toEMU (50), Units.toEMU (50));

4.3. עיצוב פסקאות

כך אנו יוצרים את הפסקה הראשונה עם תוכן שנלקח מה- poi-word-para1.txt קוֹבֶץ:

XWPFParagraph para1 = document.createParagraph (); para1.setAlignment (ParagraphAlignment.BOTH); מחרוזת מחרוזת 1 = convertTextFileToString (פסקה 1); XWPFRun para1Run = para1.createRun (); para1Run.setText (string1);

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

באופן דומה, אנו יכולים ליצור שתי פסקאות אחרות באמצעות תוכן מקבצים poi-word-para2.txt ו poi-word-para3.txt:

XWPFParagraph para2 = document.createParagraph (); para2.setAlignment (ParagraphAlignment.RIGHT); מחרוזת מחרוזת 2 = convertTextFileToString (פסקה 2); XWPFRun para2Run = para2.createRun (); para2Run.setText (string2); para2Run.setItalic (נכון); XWPFParagraph para3 = document.createParagraph (); para3.setAlignment (ParagraphAlignment.LEFT); מחרוזת מחרוזת 3 = convertTextFileToString (פסקה 3); XWPFRun para3Run = para3.createRun (); para3Run.setText (string3);

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

4.4. יצירת קובץ MS Word

כעת אנו מוכנים לכתוב קובץ Microsoft Word לזיכרון מה- מסמך מִשְׁתַנֶה:

FileOutputStream out = FileOutputStream חדש (פלט); document.write (out); out.close (); document.close ();

כל קטעי הקוד בחלק זה עטופים בשיטה בשם handleSimpleDoc.

5. ניתוח ובדיקה

סעיף זה מתאר את הניתוח של קבצי MS Word ואימות התוצאה.

5.1. הכנה

אנו מכריזים על שדה סטטי בשיעור הבדיקה:

סטטי WordDocument wordDocument;

שדה זה משמש להתייחסות למופע של הכיתה הסוגר את כל שברי הקוד המוצגים בסעיפים 3 ו -4.

לפני ניתוח ובדיקה, עלינו לאתחל את המשתנה הסטטי שהוכרז ממש למעלה וליצור את לנוח עם האביב.docx הקובץ בספריית העבודה הנוכחית על ידי הפעלת ה- handleSimpleDoc שיטה:

@BeforeClass חלל סטטי ציבורי createMSWordFile () זורק חריג {WordTest.wordDocument = WordDocument חדש (); wordDocument.handleSimpleDoc (); }

נעבור לשלב הסופי: ניתוח קובץ MS Word ואימות התוצאה.

5.2. ניתוח קובץ MS Word ואימות

ראשית, אנו מחלצים תוכן מקובץ MS Word הנתון בספריית הפרויקט ומאחסנים את התוכן ב- רשימה שֶׁל XWPFParagraph:

נתיב msWordPath = Paths.get (WordDocument.output); מסמך XWPFDocument = XWPFDocument חדש (Files.newInputStream (msWordPath)); רשימת פסקאות = document.getParagraphs (); document.close ();

לאחר מכן, בואו נוודא שהתוכן והסגנון של הכותרת זהים למה שקבענו קודם:

XWPFParagraph title = paragraphs.get (0); XWPFRun titleRun = title.getRuns (). Get (0); assertEquals ("בנה את ה- REST API שלך עם אביב", title.getText ()); assertEquals ("009933", titleRun.getColor ()); assertTrue (titleRun.isBold ()); assertEquals ("שליח", titleRun.getFontFamily ()); assertEquals (20, titleRun.getFontSize ());

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

assertEquals ("מיסודות HTTP ל- Mastery API", סעיפים. get (1). getText ()); assertEquals ("מה עושה ממשק API טוב?", paragrafs.get (3) .getText ()); assertEquals (wordDocument.convertTextFileToString (WordDocument.paragraph1), paragraphs.get (4) .getText ()); assertEquals (wordDocument.convertTextFileToString (WordDocument.paragraph2), paragraphs.get (5) .getText ()); assertEquals (wordDocument.convertTextFileToString (WordDocument.paragraph3), paragraphs.get (6) .getText ());

כעת אנו יכולים להיות בטוחים כי יצירת ה- לנוח עם האביב.docx הקובץ הצליח.

6. מסקנה

הדרכה זו הציגה תמיכה ב- Apache POI עבור פורמט Microsoft Word. הוא עבר צעדים הדרושים ליצירת קובץ MS Word ולאימות תוכנו.

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


$config[zx-auto] not found$config[zx-overlay] not found