קריאה וכתיבה של גיליונות אלקטרוניים של אקסל

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

ממליץ על ספריית גיליונות אלקטרוניים

שאלה: התבקשתי להרחיב את תוכנת הגיליונות האלקטרוניים מבוססי Java שלי לקריאה וכתיבה של גיליונות אלקטרוניים של Excel. אתה יכול להמליץ ​​על ספריית Java פתוחה שתעזור לי במשימה זו?

ת: ייתכן שתרצה לבדוק את JExcelAPI, שהיא ספריית קוד פתוח בוגרת מבוססת Java המאפשרת לך לקרוא, לכתוב ולשנות גיליונות אלקטרוניים של Excel. להלן מספר תכונות רבות:

  • קורא נתונים מחוברות העבודה Excel 95, 97, 2000, XP ו- 2003
  • קורא וכותב נוסחאות (Excel 97 ואילך בלבד)
  • מייצר גיליונות אלקטרוניים בפורמט Excel 2000
  • תומך בעיצוב גופן, מספר ותאריך
  • תומך בהצללת תאים, גבול תאים וצביעת תאים
  • משנה גליונות עבודה קיימים
  • תומך בהעתקת תרשימים
  • תומך בהכנסה והעתקה של תמונות לגיליונות אלקטרוניים

JExcelAPI פותח על ידי אנדרו קאהן ושוחרר תחת הרישיון הציבורי הכללי של GNU.

הורדת ספריית JExcelAPI

ש: איך אני מוריד את JExcelAPI?

ת: השלם את השלבים הבאים להורדת JExcelAPI:

  1. הפנה את הדפדפן שלך לאתר SourceForge של JExcelAPI.
  2. לחץ על jexcelapiהקישור.
  3. בדף המתקבל, לחץ על אחד מקישורי התיקיות. לדוגמא, לחצתי על 2.6.12הקישור.
  4. בדף המתקבל, לחץ על שם הקובץ של ארכיון ההפצה. לדוגמא, לחצתי על jexcelapi_2_6_12.zipהקישור.
  5. לאחר עיכוב קצר, הדפדפן שלך יבקש ממך לשמור את הקובץ הזה. קדימה ושמור את הקובץ.

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

הדגמת ספריית JExcelAPI

ש: האם בספריית JExcelAPI יש הדגמות כלשהן?

ת: מדריך jexcelapiהבית של JExcelAPI מכיל jxl.jarקובץ המכיל הדגמות לקריאה, כתיבה והעתקת גיליונות אלקטרוניים.

הדגמת הקריאה קוראת גיליון אלקטרוני קיים, וממירה אותו לפורמט ערך מופרד באמצעות פסיקים (CSV) או XML באמצעות האפשרות -csvאו -xmlשורת הפקודה. שקול את הדוגמאות הבאות:

java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls

דוגמאות אלה קוראות budget.xlsומפיקות את תוכנו בפורמט CSV ו- XML ​​לפלט רגיל. כאשר לא מצויינים -csvולא -xmlמצוין -csv.

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

java -jar jxl.jar -write sample.xls

איור 1 מציג חלק מהגיליון sample.xlsהאלקטרוני שהתקבל .

איור 1. השתמשתי ב- LibreOffice Calc כדי לגשת לגיליון האלקטרוני sample.xls

הדגמת ההעתקה מעתיקה את הגיליון האלקטרוני לדוגמה jxlrwtest.xls, המאוחסן באותה ספריה כמו jxl.jarלגיליון אלקטרוני חדש. בגיליון האלקטרוני המתקבל, הגיליון הראשון (המקורי) אינו משתנה ואילו הגיליון השני (שונה) מכיל ערכים ששונו.

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

java -jar jxl.jar -rw jxlrwtest.xls copy.xls

שורת פקודה זו מעתיקה jxlrwtest.xlsאל copy.xls. איור 2 מציג את הגיליון השני (ששונה) ב- LibreOffice Calc.

איור 2. לחץ על הכרטיסיות המקוריות והשינויים כדי להציג את הגיליונות המקוריים והשינויים

כולל JExcelAPI לאוסף וביצוע

ש: כיצד אוכל לכלול את JExcelAPI בעת הידור קוד המקור והפעלת יישום?

ת: כדי לכלול את JExcelAPI בעת הידור קוד המקור והפעלת יישום, בצע אחת מהפעולות הבאות:

  • הוסף את הקובץ jexcelapiשל ספריית הבית למשתנה הסביבה jxl.jarשלך CLASSPATH.
  • כולל jxl.jarבאמצעות javacו javaשל התוכנית -cpאפשרות שורת הפקודה.

תכנות עם JExcelAPI

ש: כיצד אוכל ליצור תוכניות Java הממנפות את JExcelAPI?

ת:jexcelapi בספרייה הביתית כוללת tutorial.htmlקובץ המציג הדרכה בסיסית על תכנות עם JExcelAPI. המדריך מראה לך כיצד לקרוא, לכתוב ולהעתיק גיליונות אלקטרוניים. המדריך דן גם בעיצוב.

jexcelapiכולל גם docsספריה משנה המספקת גישה לתיעוד API מקיף. כוון את דפדפן האינטרנט שלך index.htmlלקובץ של ספרייה זו ותוכל לחקור את הסוגים בארבע החבילות המתועדות של הספרייה:

  • jxl: סוגי החבילה העיקרית
  • jxl.demo: סוגים להדגמות השונות
  • jxl.format: סוגים הקשורים לעיצוב
  • jxl.write: סוגים לכתיבה לגיליון אלקטרוני

שים לב שרשימה זו אינה ממצה. חבילות נוספות כגון jxl.readקיימות אך אינן מתועדות. כדי ללמוד על חבילות נוספות, בצע jar tvf jxl.jarובדק את פרטי החבילה ברישום ה- JAR שהתקבל.

כדי לעזור לך להתחיל לעבוד עם JExcelAPI, יצרתי JExcelAPIDemoיישום פשוט המדגים יצירת גיליון אלקטרוני חדש שנשמר בתוכו output.xlsואז קורא ומוציא את תוכן הגיליון האלקטרוני הזה. בדוק את הרישום 1.

רישום 1. כתיבה וקריאה של גיליון אלקטרוני פשוט

import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class JExcelAPIDemo { public static void main(String[] args) throws BiffException, IOException, WriteException { WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook(new File("output.xls")); WritableSheet wsheet = wworkbook.createSheet("First Sheet", 0); Label label = new Label(0, 2, "A label record"); wsheet.addCell(label); Number number = new Number(3, 4, 3.1459); wsheet.addCell(number); wworkbook.write(); wworkbook.close(); Workbook workbook = Workbook.getWorkbook(new File("output.xls")); Sheet sheet = workbook.getSheet(0); Cell cell1 = sheet.getCell(0, 2); System.out.println(cell1.getContents()); Cell cell2 = sheet.getCell(3, 4); System.out.println(cell2.getContents()); workbook.close(); } }

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

Listing 1 continues by getting a workbook associated with output.xls and reading its contents. The getSheet() method provides access to the first sheet within this workbook. Its getCell() method is called to access the two cells, whose contents are then output.

Assuming that jxl.jar is located in the current directory, execute the following command to compile Listing 1:

javac -cp jxl.jar JExcelAPIDemo.java

Assuming success, execute the following command to run JExcelAPIDemo:

java -cp jxl.jar;. JExcelAPIDemo

You should observe the following output:

A label record 3.146

Figure 3 shows you output.xls in a LibreOffice context.

Figure 3. The solitary sheet displays two cell values

What's next?

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

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

התוכנה הבאה שימשה לפיתוח קוד ההודעה:

  • 64 סיביות JDK 7u6
  • JExcelAPI 2.6.12

קוד הפוסט נבדק בפלטפורמות הבאות:

  • JVM ב- Windows 7 SP1 עם 64 סיביות

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