باستخدام واجهة برمجة التطبيقات هذه، يمكن لأنظمة التشغيل غير Windows أيضًا معالجة جداول بيانات Excel من خلال تطبيقات Java النقية. نظرًا لأنه مكتوب بلغة Java، يمكننا استدعاء واجهة برمجة التطبيقات من خلال JSP وServlet في تطبيق الويب للوصول إلى جدول بيانات Excel.
انسخ رمز الكود كما يلي:
package com.yonyou.test;
استيراد java.io.File؛
import java.io.IOException;
استيراد jxl.Workbook؛
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.NumberFormats;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
الطبقة العامة JxlTable {
نهائي خاص JxlTable jxlTable = new JxlTable();
public JxlTable getInstance() {
إرجاع jxlTable;
}
JxlTable العامة () {
}
public boolean createTable(String header, String[] body, String filePath) {
boolean createFlag = true;
كتاب قابل للكتابة؛
يحاول {
// إنشاء ملف Excel بناءً على المسار
book = Workbook.createWorkbook(new File(filePath));
// أنشئ ورقة باسم "جدول"
WritableSheetsheet = book.createSheet("Table", 0);
//تعيين عدم عرض العمود
Sheet.setColumnView(1, 5);
// قم بإزالة خطوط الشبكة في الورقة بأكملها
Sheet.getSettings().setShowGridLines(false);
تسمية tempLabel = null;
// إخراج الرأس
String[] headerArr = header.split("،);
int headerLen = headerArr.length;
// حلقة لكتابة محتوى الرأس
لـ (int i = 0; i < headerLen; i++) {
tempLabel = تسمية جديدة (1 + i، 1، headerArr[i]،
getHeaderCellStyle());
Sheet.addCell(tempLabel);
}
// إخراج نص الجدول
int bodyLen = body. length;
// حلقة لكتابة محتوى نص الجدول
لـ (int j = 0; j < bodyLen; j++) {
String[] bodyTempArr = body[j].split("،);
for (int k = 0; k < bodyTempArr.length; k++) {
WritableCellFormat tempCellFormat = null;
tempCellFormat = getBodyCellStyle();
إذا (tempCellFormat != null) {
إذا (ك == 0 || ك == (bodyTempArr.length - 1)) {
tempCellFormat.setAlignment(Alignment.CENTRE);
}
}
tempLabel = تسمية جديدة (1 + ك، 2 + ي، bodyTempArr[ك]،
tempCellFormat);
Sheet.addCell(tempLabel);
}
}
book.write();
book. Close();
} قبض (IOException ه) {
createFlag = false;
System.out.println("فشل إنشاء EXCEL!");
printStackTrace();
} التقاط (RowsExceededException e) {
createFlag = false;
System.out.println("فشل إنشاء إعداد وحدة EXCEL!");
printStackTrace();
} قبض على (WriteException ه) {
createFlag = false;
System.out.println("فشلت كتابة EXCEL!");
printStackTrace();
}
إرجاع createFlag؛
}
public WritableCellFormat getHeaderCellStyle() {
خط WritableFont = جديد WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.BOLD، false، UnderlineStyle.NO_UNDERLINE)؛
WritableCellFormat headerFormat = new WritableCellFormat(
NumberFormats.TEXT);
يحاول {
// إضافة إعدادات الخط
headerFormat.setFont(font);
// قم بتعيين لون خلفية الخلية: الرأس أصفر
headerFormat.setBackground(Colour.YELLOW);
// قم بتعيين نمط حدود جدول الرأس
// خط الطاولة بأكمله سميك وأسود
headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,
اللون. أسود)؛
// يتم عرض محتوى الرأس أفقيًا في المركز
headerFormat.setAlignment(Alignment.CENTRE);
} قبض على (WriteException ه) {
System.out.println("فشل إعداد نمط خلية الرأس!");
}
تنسيق رأس الإرجاع؛
}
public WritableCellFormat getBodyCellStyle() {
خط WritableFont = جديد WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.NO_BOLD، false، UnderlineStyle.NO_UNDERLINE);
WritableCellFormat bodyFormat = new WritableCellFormat(font);
يحاول {
// قم بتعيين لون خلفية الخلية: نص الجدول أبيض
bodyFormat.setBackground(Colour.WHITE);
// قم بتعيين نمط حدود جدول الرأس
// خط الجدول بأكمله رفيع وأسود
bodyFormat
.setBorder(Border.ALL, BorderLineStyle.THIN, Color.BLACK);
} قبض على (WriteException ه) {
System.out.println("فشل إعداد نمط خلية نص الجدول!");
}
إرجاع تنسيق الجسم؛
}
public static void main(String[] args) {
رأس السلسلة = "لا، الاسم، الجنس، العمر"؛
String[] body = new String[4];
body[0] = "1,أويانغ فنغ، ذكر، 68";
body[1] = "2,هوانغ ياوشي,ذكر,67";
body[2] = "3,هونغ كيغونغ,ذكر,70";
body[3] = "4,غوو جينغ,ذكر,32";
String filePath = "e:/test.xls";
JxlTable testJxl = JxlTable.getInstance();
علامة منطقية = testJxl.createTable(header, body, filePath);
إذا (العلم) {
System.out.println("تم إنشاء الجدول بنجاح!!");
}
}
}
شرح خطوة بخطوة:
قراءة ملف اكسل
لقراءة ملف Excel، يجب عليك أولاً إنشاء كتاب Word:
انسخ رمز الكود كما يلي:
Workbook wb=Workbook.getWorkbook(ملف الملف);
Workbook wb=Workbook.getWorkbook(InputStream is);
ثم يمكنك الحصول على ورقة العمل الخاصة به :
انسخ رمز الكود كما يلي:
Sheet[] Sheets=wb.getSheets(); // احصل على جميع أوراق العمل
Sheet Sheet=wb.getSheet(0); // يشير إلى الحصول على ورقة العمل الأولى.
وأخيرًا، يمكنك الحصول على قيم خلايا معينة في ورقة العمل:
انسخ رمز الكود كما يلي:
Cell cell=sheet.getCell(0,0); // احصل على بيانات العمود الأول والصف الأول. المعلمة الأولى هي العمود
String value=cell.getContents(); // احصل على قيمة الخلية في شكل سلسلة
String type=cell.getType(); // احصل على نوع بيانات الخلية.
إغلاق سير عمل المصنف :
عند الانتهاء من معالجة بيانات جدول بيانات Excel، تأكد من استخدام طريقة الإغلاق () لإغلاق الكائن الذي تم إنشاؤه مسبقًا لتحرير مساحة الذاكرة المشغولة في عملية قراءة جدول البيانات. وهذا مهم بشكل خاص عند قراءة كمية كبيرة من البيانات . راجع مقتطف الكود التالي:
انسخ رمز الكود كما يلي:
wb. Close();
ملاحظة: لا يمكنك إغلاق ملف Excel إلا بعد إكمال العملية، وسيكون استدعاء Sheet s=wb.getSheet(0) فارغًا.
مقدمة للطرق شائعة الاستخدام :
الأساليب المقدمة من فئة المصنف
1. إنت getNumberOfSheets ()
الحصول على عدد أوراق العمل في المصنف، على سبيل المثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
أوراق كثافة العمليات = rwb.getNumberOfSheets();
2. ورقة [] getSheets ()
إرجاع مصفوفة من كائنات الورقة في المصنف، على سبيل المثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
ورقة[] ورقة = rwb.getSheets();
الطرق التي توفرها واجهة الورقة
1. سلسلة getName ()
احصل على اسم الورقة، مثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
String SheetName = rs.getName();
2. int getColumns()
احصل على إجمالي عدد الأعمدة الموجودة في جدول الورقة، على سبيل المثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3. الخلية [] getColumn (عمود int)
الحصول على كافة الخلايا في عمود معين وإرجاع مجموعة من كائنات الخلية مثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
الخلية[] الخلية = rs.getColumn(0);
4. int getRows()
احصل على إجمالي عدد الصفوف الموجودة في جدول الورقة، على سبيل المثال:
انسخ رمز الكود كما يلي:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5. الخلية [] getRow (صف int)