جافا استيراد وتصدير عمليات التفوق (jxl)
تفسر Java بيانات Excel (استخدام حزمة jxl.jar)
الكلمات الرئيسية: جافا إكسل jxl.jar
عنوان تنزيل حزمة jxl.jar:
http://www.andykhan.com/jexcelapi/
عنوان التحميل الحقيقي:
http://www.andykhan.com/jexcelapi/download.html
خصائصه موصوفة على الموقع على النحو التالي:
● يدعم كافة إصدارات Excel 95-2000 ● إنشاء تنسيق قياسي لـ Excel 2000 ● يدعم عمليات الخط والرقم والتاريخ ● قادر على تعديل سمات الخلية ● يدعم الصور والرسوم البيانية وينبغي القول أن الوظائف المذكورة أعلاه يمكن أن تلبي احتياجاتنا تقريبًا. الشيء الأكثر أهمية هو أن واجهة برمجة التطبيقات هذه عبارة عن Java خالصة ولا تعتمد على نظام Windows، حتى لو كانت تعمل بنظام التشغيل Linux، فلا يزال بإمكانها معالجة ملفات Excel بشكل صحيح. تجدر الإشارة أيضًا إلى أن هذه المجموعة من واجهات برمجة التطبيقات (API) تتمتع بدعم محدود جدًا للرسومات والمخططات، ولا تتعرف إلا على تنسيق PNG.
لبناء البيئة، قم بفك ضغط الملف الذي تم تنزيله للحصول على jxl.jar، ثم ضعه في مسار الفصل، واكتمل التثبيت.
العمليات الأساسية
1. قم بإنشاء الملف لإنشاء ملف Excel باسم "Test Data.xls"، حيث تسمى ورقة العمل الأولى "First Page" ويكون التأثير العام كما يلي:
كود جافا
/*
* تم الإنشاء في 30 ديسمبر 2007
*
* لتغيير القالب لهذا الملف الذي تم إنشاؤه، انتقل إلى
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
الحزمة JExcelTest.standard؛
استيراد java.io.*;
استيراد jxl.*;
import jxl.write.*;
/**
* @ المؤلف كين
*
* لتغيير القالب لهذا النوع الذي تم إنشاؤه قم بالتعليق على ذلك
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
فئة عامة إنشاء XLS {
public static void main(String[] args) {
يحاول {
// فتح الملف.
WritableWorkbook book = Workbook.createWorkbook(new File("d:/Test.xls"));
// إنشاء ورقة باسم "Sheet_1" يعني أن هذه هي الصفحة الأولى.
WritableSheetsheet = book.createSheet("Sheet_1", 0);
// تحديد عمود الخلية والصف في منشئ التسمية، ومحتوى الخلية كتابة "اختبار".
// الخلية هي العمود الأول، وقيمة الصف الأول هي "اختبار".
تسمية التسمية = تسمية جديدة (0، 0، "اختبار")؛
// أضف خلية محددة أعلاه إلى مثيل الورقة.
Sheet.addCell(label);
// أنشئ خلية باستخدام إضافة رقمية تحذير: استخدم بالضرورة مسار الحزمة المتكامل، وإلا فسيتم رمي خطأ في المسار.
// الخلية هي العمود الثاني، وقيمة الصف الأول هي 789.123.
jxl.write.Number number = new jxl.write.Number(1, 0, 789.123);
// أضف خلية محددة أعلاه إلى مثيل الورقة.
Sheet.addCell(number);
// أضف تعريف كافة الخلايا أعلاه إلى الحالة.
book.write();
// إغلاق الملف case.
book. Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
}
}
بعد تجميع Java وتنفيذها، سيتم إنشاء ملف Excel في الموقع الحالي.
2. اقرأ الملف. خذ ملف Excel الذي أنشأناه للتو كمثال لإجراء عملية قراءة بسيطة. رمز البرنامج كما يلي:
كود جافا
/*
* تم الإنشاء في 30 ديسمبر 2007
*
* لتغيير القالب لهذا الملف الذي تم إنشاؤه، انتقل إلى
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
الحزمة JExcelTest.standard؛
استيراد java.io.*;
استيراد jxl.*;
/**
* @ المؤلف كين
*
* لتغيير القالب لهذا النوع الذي تم إنشاؤه قم بالتعليق على ذلك
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
الطبقة العامة ReadXLS {
public static void main(String[] args) {
يحاول {
كتاب المصنف = Workbook.getWorkbook(new File("d:/Test.xls"));
// الحصول على كائن ورقة.
ورقة الورقة = book.getSheet(0);
// احصل على محتوى العمود الأول والصف الأول.
خلية الخلية = Sheet.getCell(0, 0);
نتيجة السلسلة = cell.getContents();
System.out.println(result);
book. Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
}
}
نتيجة تنفيذ البرنامج: اختبار
3. تعديل الملفات يمكنك استخدام jExcelAPI لتعديل ملفات Excel الموجودة. عند تعديل ملفات Excel، باستثناء الطرق المختلفة لفتح الملف، تكون العمليات الأخرى هي نفس عملية إنشاء Excel. يضيف المثال التالي ورقة عمل إلى ملف Excel الذي قمنا بإنشائه:
تعديل فئة Excel وإضافة ورقة عمل
كود جافا
/*
* تم الإنشاء في 30 ديسمبر 2007
*
* لتغيير القالب لهذا الملف الذي تم إنشاؤه، انتقل إلى
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
الحزمة JExcelTest.standard؛
استيراد java.io.*;
استيراد jxl.*;
import jxl.write.*;
/**
* @ المؤلف كين
*
* لتغيير القالب لهذا النوع الذي تم إنشاؤه قم بالتعليق على ذلك
* نافذة>التفضيلات>جافا>إنشاء الأكواد البرمجية>الكود والتعليقات
*/
تحديث الطبقة العامة XLS {
public static void main(String[] args) {
يحاول {
//الحصول على الملف.
Workbook wb = Workbook.getWorkbook(new File("d:/Test.xls"));
// افتح ملف نسخة (ملف جديد)، ثم اكتب محتوى بنفس المحتوى باستخدام Test.xls.
كتاب WritableWorkbook =
Workbook.createWorkbook(new File("d:/Test.xls"), wb);
// أضف ورقة.
WritableSheetsheet = book.createSheet("Sheet_2", 1);
Sheet.addCell(new Label(0, 0, "test2"));
book.write();
book. Close();
} قبض (الاستثناء ه) {
printStackTrace();
}
}
}
العمليات المتقدمة
1. لا يتضمن تنسيق البيانات في برنامج Excel أنواعًا معقدة من البيانات، حيث يمكنه التعامل مع السلاسل والأرقام والتواريخ بشكل جيد نسبيًا وهو كافٍ للتطبيقات العامة.
تنسيق السلسلة يتضمن تنسيق السلسلة عناصر مثل الخط والسمك وحجم الخط وما إلى ذلك. هذه الوظائف مسؤولة بشكل أساسي عن فئتي WritableFont وWritableCellFormat. لنفترض أننا استخدمنا العبارة التالية عند إنشاء خلية تحتوي على سلسلة، لتسهيل الوصف، نقوم بترقيم كل سطر من الأوامر:
WritableFont Font1= new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);
أو
// قم بتعيين تنسيق الخط إلى تنسيق يدعمه Excel
WritableFont Font3=new WritableFont(WritableFont.createFont("楷体_GB2312"),12,WritableFont.NO_BOLD );
① WritableCellFormat format1=new WritableCellFormat(font1);
② تسمية التسمية = تسمية جديدة (0،0، "اختبار البيانات 4"، التنسيق 1)
③ من بينها
I. تم تحديد تنسيق السلسلة: الخط هو TIMES، وحجم الخط هو 16، ويتم عرضه بالخط العريض. يحتوي WritableFont على مجموعة غنية جدًا من المُنشئات للاستخدام في مواقف مختلفة. توجد قائمة مفصلة في java-doc الخاص بـ jExcelAPI، والتي لن يتم إدراجها هنا.
II. يستخدم الكود أعلاه فئة WritableCellFormat. ومن خلالها يمكن تحديد سمات مختلفة للخلية.
III. يتم استخدام مُنشئ فئة التسمية لتحديد التنسيق الذي يتم تقديمه للسلسلة. في فئة WritableCellFormat، هناك طريقة أخرى مهمة جدًا وهي تحديد محاذاة البيانات. على سبيل المثال، في مثالنا أعلاه، يمكنك تحديد:
// حدد المحاذاة الأفقية للتوسيط
format1.setAlignment(jxl.format.Alignment.CENTRE);
// حدد المحاذاة العمودية على أنها متمركزة
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
// تعيين التفاف الخط التلقائي
format1.setWrap(true);
2. عمليات الخلية
جزء مهم جدًا من Excel هو تشغيل الخلايا، مثل ارتفاع الصف وعرض العمود ودمج الخلايا وما إلى ذلك. ولحسن الحظ، يوفر jExcelAPI هذه الدعمات. هذه العمليات بسيطة نسبيًا، ويتم تقديم واجهات برمجة التطبيقات ذات الصلة فقط أدناه.
1. دمج الخلايا
WritableSheet.mergeCells(int m,int n,int p,int q);
الدالة هي دمج كافة الخلايا من (m,n) إلى (p,q) فمثلا:
WritableSheet Sheet=book.createSheet("الصفحة الأولى",0);
// دمج كافة الخلايا من الصف الأول من العمود الأول إلى الصف الأول من العمود السادس
Sheet.mergeCells(0,0,5,0);
يمكن أن تكون عمليات الاندماج أفقية أو رأسية. لا يمكن دمج الخلايا المدمجة مرة أخرى، وإلا سيتم تشغيل استثناء.
2. ارتفاع الصف وعرض العمود
WritableSheet.setRowView(int i,int height);
الدالة هي تحديد ارتفاع الصف i+1، على سبيل المثال:
// اضبط ارتفاع الصف الأول على 200
Sheet.setRowView(0,200);
WritableSheet.setColumnView(int i,int width);
وظيفتها هي تحديد عرض العمود i+1، على سبيل المثال:
// اضبط عرض العمود الأول على 30
Sheet.setColumnView(0,30);
3. صور العملية
كود جافا
كتابة الفراغ الثابت العام () رمي الاستثناء {
WritableWorkbook wwb=Workbook.createWorkbook(new File("c:/1.xls"));
WritableSheet ws=wwb.createSheet("ورقة الاختبار 1"،0);
File file=new File("C:\jbproject\PVS\WebRoot\weekhit\1109496996281.png");
WritableImage image=new WritableImage(1, 4, 6, 18,file);
ws.addImage(image);
wwb.write();
www. Close();
}
إنها بسيطة للغاية وهي نفس طريقة إدراج الخلايا، ولكنها تحتوي على المزيد من المعلمات، وترث فئة WritableImage الرسم. وغني عن القول أن المعلمة الأخيرة من النوع double بواسطة x، y، width، height لاحظ أن العرض والارتفاع هنا ليس عرض الصورة وارتفاعها، بل عدد الوحدات التي تشغلها الصورة لأنها ترث الرسم، ويجب أن يكون نوعها مزدوجًا. لم أطلع على تفاصيل كيفية تنفيذها :) لأنني في عجلة من أمري، سأكمل الوظائف أولاً، وسيكون لدي الوقت لدراسة الباقي لاحقًا. سأستمر في تدوين تجربتي في استخدامه في المستقبل.
يقرأ:
عند القراءة، تكون الفكرة كالتالي: استخدم أولاً دفق الإدخال (InputStream) للحصول على ملف Excel، ثم استخدم Workbook في jxl للحصول على المصنف، واستخدم Sheet للحصول على ورقة العمل من المصنف، واستخدم Cell للحصول على نقطة معينة في ورقة العمل.
InputStream->Workbook->Sheet->Cell، سوف تحصل على الخلايا في ملف Excel
كود جافا
مسار السلسلة = "c:\excel.xls";// عنوان URL لملف Excel
InputStream هو = FileInputStream جديد (مسار)؛ // الكتابة إلى FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); // احصل على المصنف
jxl.Sheet st = wb.getSheet(0);// احصل على ورقة العمل الأولى في المصنف
Cell cell=st.getCell(0,0);// احصل على الخلية الأولى من ورقة العمل، وهي A1
محتوى السلسلة = cell.getContents();//getContents() يحول الأحرف الموجودة في الخلية إلى سلاسل
wb.Close();// أغلق المصنف
is.Close();// أغلق دفق الإدخال
مسار السلسلة = "c:\excel.xls";// عنوان URL لملف Excel
InputStream هو = FileInputStream جديد (مسار)؛ // الكتابة إلى FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); // احصل على المصنف
jxl.Sheet st = wb.getSheet(0);// احصل على ورقة العمل الأولى في المصنف
Cell cell=st.getCell(0,0);// احصل على الخلية الأولى من ورقة العمل، وهي A1
محتوى السلسلة = cell.getContents();//getContents() يحول الأحرف الموجودة في الخلية إلى سلاسل
wb.Close();// أغلق المصنف
is.Close();// أغلق دفق الإدخال يمكننا الحصول على أي خلية من خلال طريقة getCell(x,y) الخاصة بالورقة، ويتوافق x وy مع الإحداثيات في Excel.
على سبيل المثال، A1 يتوافق مع (0,0)، A2 يتوافق مع (0,1)، وD3 يتوافق مع (3,2). تبدأ الإحداثيات في Excel من A,1، ولكن في jxl تبدأ جميعها من 0.
يمكنك أيضًا الحصول على عدد الصفوف والأعمدة من خلال طريقتي getRows() وgetColumns() في الورقة، واستخدامها للتحكم في الحلقة لإخراج كافة المحتويات في الورقة.
يكتب:
لكتابة محتوى في Excel، يمكنك استخدام الفئات الموجودة في الحزمة jxl.write بشكل أساسي.
الفكرة هي:
OutputStream<-WritableWorkbook<-WritableSheet<-Label
تمثل التسمية هنا موقع ومحتوى الخلية المكتوبة على الورقة.
كود جافا
OutputStream os=new FileOutputStream("c:\test.xls");// عنوان URL لملف Excel الناتج
WritableWorkbook wwb = Workbook.createWorkbook(os);// أنشئ مصنفًا قابلاً للكتابة
WritableSheet ws = wwb.createSheet("sheet1"، 0);// إنشاء ورقة عمل قابلة للكتابة
Label labelCF=new Label(0, 0, "hello");// إنشاء موقع ومحتوى للكتابة
ws.addCell(labelCF);//اكتب التسمية في الورقة
منشئ التسمية Label(int x, int y, String aString) xy يعني xy عند القراءة، وaString هو المحتوى المكتوب.
WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);// تعيين خط الكتابة
WritableCellFormat wcfF = جديد WritableCellFormat(wf);//تعيين CellFormat
Label labelCF=new Label(0, 0, "hello");// إنشاء موقع الكتابة والمحتوى والتنسيق
يمكن لمنشئ Label آخر، Label(int c, int r, String cont, CellFormat st)، تنسيق المحتوى المكتوب وتعيين الخط والسمات الأخرى.
يمكنك الكتابة الآن
wwb.write();
إغلاق بعد الكتابة
www. Close();
قم أيضًا بإغلاق دفق الإخراج
os.Close;
حسنًا، طالما أنك تجمع بين القراءة والكتابة، يمكنك قراءة البيانات في N Excel وكتابتها في جدول Excel الجديد الذي تريده، وهو أمر مريح للغاية.
وفيما يلي مثال على البرنامج:
كود جافا
sql = "اختر * من اسم الجدول";
rs = stmt.executeQuery(sql);
// أنشئ ملف إكسل جديد
String filePath=request.getRealPath("aaa.xls");
File myFilePath=new File(filePath);
إذا (!myFilePath.exists())
myFilePath.createNewFile();
FileWriter resultFile=new FileWriter(myFilePath);
PrintWriter myFile=new PrintWriter(resultFile);
resultFile. Close();
// استخدم JXL لإضافة محتوى إلى الملف الذي تم إنشاؤه حديثًا
OutputStream outf = new FileOutputStream(filePath);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(outf);
jxl.write.WritableSheet ws = wwb.createSheet("sheettest", 0);
كثافة العمليات ط = 0؛
كثافة العمليات ي=0;
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(new Label(k,0,rs.getMetaData().getColumnName(k+1)));
}
بينما(rs.next()){
println(rs.getMetaData().getColumnCount());
for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(new Label(k,j+i+1,rs.getString(k+1)));
}
أنا++;
}
wwb.write();
www. Close();
}catch(استثناء e){e.printStackTrace();}
أخيراً{
rs. Close();
conn.Close();
}
Response.sendRedirect("aaa.xls");
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: http://blog.csdn.net/yangf1984/archive/2009/12/28/5088933.aspx .