لقد كنت أرغب في دراسة طريقة استخدام Java لتشغيل Excel لفترة طويلة، وليس لدي ما أفعله اليوم، لذلك تعلمت القليل ولخصته. لاستخدام Java لتشغيل Excel، هناك أداة مفتوحة المصدر - jxl.jar، والتي يمكن تنزيلها من http://sourceforge.net/projects/jexcelapi/files/.
1. اقرأ محتويات ملف Excel
انسخ رمز الكود كما يلي:
/** *//**اقرأ محتويات ملف Excel
* ملف @param للقراءة
* @يعود
*/
سلسلة ثابتة عامة readExcel (ملف ملف) ... {
StringBuffer sb = new StringBuffer();
المصنف wb = null;
يحاول...{
// إنشاء كائن المصنف
wb=Workbook.getWorkbook(file);
} قبض (BiffException ه) ...{
printStackTrace();
} قبض على (IOException ه) ...{
printStackTrace();
}
إذا (وب==خالية)
عودة فارغة؛
// بعد الحصول على كائن المصنف، يمكنك الحصول على كائن الورقة (ورقة العمل) من خلاله
ورقة[] ورقة = wb.getSheets();
إذا (ورقة!=null&&sheet.length>0)...{
// قم بالتكرار خلال كل ورقة عمل
ل(int i=0;i<sheet.length;i++)...{
// احصل على عدد الصفوف في ورقة العمل الحالية
introwNum =sheet[i].getRows();
ل(int j=0;j<rowNum;j++)...{
// احصل على جميع الخلايا في الصف الحالي
الخلية[] الخلايا = الورقة[i].getRow(j);
إذا (الخلايا!=null&&cells.length>0)...{
// حلقة من خلال كل خلية
for(int k=0;k<cells.length;k++)...{
// اقرأ قيمة الخلية الحالية
String cellValue = cell[k].getContents();
sb.append(cellValue+" ");
}
}
sb.append(" ");
}
sb.append(" ");
}
}
// أخيرًا أغلق المورد وحرر الذاكرة
wb. Close();
إرجاع sb.toString();
}
2. الكتابة إلى ملف Excel
هناك العديد من التنسيقات هنا، مثل محتوى النص الغامق، وإضافة ألوان معينة، وما إلى ذلك. يمكنك الرجوع إلى واجهة برمجة التطبيقات الخاصة بـ jxl
انسخ رمز الكود كما يلي:
/**إنشاء ملف إكسل
* @param fileName اسم ملف Excel الذي سيتم إنشاؤه
*/
الكتابة الفراغية العامة الثابتة (اسم الملف سلسلة)...{
WritableWorkbook wwb = null;
يحاول...{
// استخدم أولاً طريقة المصنع لفئة المصنف لإنشاء كائن مصنف (مصنف) قابل للكتابة
wwb = Workbook.createWorkbook(new File(fileName));
} قبض على (IOException ه) ...{
printStackTrace();
}
إذا (شبكة الاتصالات العالمية!=فارغة)...{
// أنشئ ورقة عمل قابلة للكتابة
// تحتوي طريقة createSheet للمصنف على معلمتين، الأولى هي اسم ورقة العمل، والثانية هي موضع ورقة العمل في المصنف.
WritableSheet ws = wwb.createSheet("sheet1", 0);
// ابدأ بإضافة الخلايا أدناه
ل(int i=0;i<10;i++)...{
ل(int j=0;j<5;j++)...{
// ما يجب ملاحظته هنا هو أنه في Excel، تمثل المعلمة الأولى العمود والمعلمة الثانية تمثل الصف.
Label labelC = new Label(j, i, "هذا هو الصف "+(i+1)+" ، العمود "+(j+1)+"");
يحاول...{
// أضف الخلايا التي تم إنشاؤها إلى ورقة العمل
ws.addCell(labelC);
} التقاط (RowsExceededException e) ...{
printStackTrace();
} قبض على (WriteException ه) ...{
printStackTrace();
}
}
}
يحاول...{
//اكتب من الذاكرة إلى الملف
wwb.write();
// أغلق الموارد وحرر الذاكرة
www. Close();
} قبض على (IOException ه) ...{
printStackTrace();
} قبض على (WriteException ه) ...{
printStackTrace();
}
}
}
ملاحظة: إذا كنت تريد كتابة محتوى إلى ملف Excel موجود، فستحتاج إلى المتابعة كما يلي:
انسخ رمز الكود كما يلي:
WritableWorkbook book = null;
يحاول...{
// يحصل Excel على الملف
Workbook wb = Workbook.getWorkbook(new File("D:/test.xls"));
// افتح نسخة من الملف وأعد البيانات المحددة إلى الملف الأصلي
book = Workbook.createWorkbook(new File("D:/test.xls"), wb);
// أضف ورقة عمل
ورقة WritableSheet = book.getSheet("sheet1");
Sheet.addCell(new Label(8,3, "تمت إضافة شيء ما في الصف 3، العمود 8"));
// TODO تم حذف الأجزاء التالية
}قبض (استثناء ه)...{
printStackTrace();
}
3. معرفة ما إذا كان ملف Excel يحتوي على كلمة رئيسية معينة
انسخ رمز الكود كما يلي:
/** البحث عما إذا كان ملف معين يحتوي على كلمة رئيسية معينة
* ملف ملف @param المراد البحث فيه
* @param keyWord الكلمة الأساسية التي سيتم البحث عنها
* @يعود
*/
كلمة مفتاح البحث المنطقية العامة الثابتة (ملف ملف، كلمة مفتاحية سلسلة)...{
الدقة المنطقية = خطأ؛
المصنف wb = null;
يحاول...{
// إنشاء كائن المصنف
wb=Workbook.getWorkbook(file);
} قبض (BiffException ه) ...{
عودة الدقة.
} قبض على (IOException ه) ...{
عودة الدقة.
}
إذا (وب==خالية)
عودة الدقة.
// بعد الحصول على كائن المصنف، يمكنك الحصول على كائن الورقة (ورقة العمل) من خلاله
ورقة[] ورقة = wb.getSheets();
ورقة استراحة منطقية = خطأ؛
إذا (ورقة!=null&&sheet.length>0)...{
// قم بالتكرار خلال كل ورقة عمل
ل(int i=0;i<sheet.length;i++)...{
إذا (ورقة استراحة)
استراحة؛
// احصل على عدد الصفوف في ورقة العمل الحالية
introwNum =sheet[i].getRows();
booleanbreakRow = false;
ل(int j=0;j<rowNum;j++)...{
إذا (فاصل)
استراحة؛
// احصل على جميع الخلايا في الصف الحالي
الخلية[] الخلايا = الورقة[i].getRow(j);
إذا (الخلايا!=null&&cells.length>0)...{
boolean BreakCell = false;
// حلقة من خلال كل خلية
for(int k=0;k<cells.length;k++)...{
إذا (كسر الخلية)
استراحة؛
// اقرأ قيمة الخلية الحالية
String cellValue = cell[k].getContents();
إذا (قيمة الخلية == فارغة)
يكمل؛
إذا (cellValue.contains(keyWord))...{
الدقة = صحيح؛
BreakCell = true;
this.breakRow = true;
BreakSheet = true;
}
}
}
}
}
}
// أخيرًا أغلق المورد وحرر الذاكرة
wb. Close();
عودة الدقة.
}
4. أدخل أيقونة الصورة في برنامج Excel
إدراج الصور أمر سهل، راجع الكود التالي:
انسخ رمز الكود كما يلي:
/** *//**إدراج الصور في Excel
* @param dataSheet ورقة العمل المراد إدراجها
* @param col تبدأ الصورة من هذا العمود
* @param الصف تبدأ الصورة من هذا الصف
* @param width عدد الأعمدة التي تشغلها الصورة
* @param height عدد الصفوف التي تشغلها الصورة
* @param imgFile ملف الصورة المراد إدراجه
*/
إدراج الفراغ الثابت العام (ورقة بيانات WritableSheet، int col، int Row، int width،
ارتفاع كثافة العمليات، ملف imgFile)...{
WritableImage img = new WritableImage(col, Row, width, height, imgFile);
dataSheet.addImage(img);
}
التعليقات على الكود أعلاه واضحة جدًا بالفعل، وربما ليست هناك حاجة لشرحها بعد الآن، يمكننا التحقق من ذلك باستخدام البرنامج التالي:
انسخ رمز الكود كما يلي:
يحاول...{
// إنشاء مصنف
WritableWorkbook Workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
// ورقة العمل المراد إدراجها
WritableSheet imgSheet = Workbook.createSheet("Images",0);
// ملف الصورة المراد إدراجه
File imgFile = new File("D:/1.png");
// يتم إدراج الصورة في الخلية الأولى من الصف الثاني، وتحتل كل منها ست خلايا في الطول والعرض.
InsertImg(imgSheet,0,1,6,6,imgFile);
Workbook.write();
Workbook.Close();
} قبض على (IOException ه) ...{
printStackTrace();
} قبض على (WriteException ه) ...{
printStackTrace();
}
لكن jxl يدعم فقط الصور بتنسيق png، ولا يتم دعم تنسيق jpg أو gif.
5. قم بإدراج الرأس والتذييل
بشكل عام، يتم تقسيم الرؤوس والتذييلات إلى ثلاثة أجزاء، اليسار والوسط واليمين. يمكنك استخدام الكود التالي لإدراج الرؤوس والتذييلات.
انسخ رمز الكود كما يلي:
/** *//**إضافة رأس وتذييل إلى ملف Excel
* @param dataSheet ورقة العمل المراد إضافتها إلى الرأس
* @param اليسار
* @param center
* @param صحيح
*/
public static void setHeader(WritableSheet dataSheet,String left,String center,String right)...{
HeaderFooter hf = new HeaderFooter();
hf.getLeft().append(left);
hf.getCentre().append(center);
hf.getRight().append(right);
// أضف رأسًا
dataSheet.getSettings().setHeader(hf);
// أضف تذييلًا
//dataSheet.getSettings().setFooter(hf);
}
يمكننا اختبار هذه الطريقة بالكود التالي:
انسخ رمز الكود كما يلي:
يحاول...{
// إنشاء مصنف
WritableWorkbook Workbook = Workbook.createWorkbook(new File("D:/test1.xls"));
// ورقة العمل المراد إدراجها
WritableSheet dataSheet = Workbook.createSheet("Add header",0);
ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "صفحة 1 من 3");
Workbook.write();
Workbook.Close();
} قبض على (IOException ه) ...{
printStackTrace();
} قبض على (WriteException ه) ...{
printStackTrace();
}