هذان اليومين ، ساعدت المعلم في إنشاء قاعدة بيانات واستيراد جميع بيانات المعاملات التجريبية في قاعدة البيانات. لكنني لا أريد البقاء في المختبر كل يوم. كان الجو محبطًا للغاية ، لذلك فكرت في قراءة البيانات في Excel أولاً وجلبها إلى المختبر لاستيرادها.
اتضح أن البيانات مثل هذا. تجارب مختلفة لها مجلد خاص. هناك مجلدات لفئات مختلفة تحت مجلد اسم التجربة. يتم تخزين مجلد تاريخ الفصل في بيانات Excel للتجارب في أوقات مختلفة. لم يكن لدى Excel الأصلي الفصل والوقت. تحتاج الآن إلى إضافة هذه المعلومات كعمود من خلال قراءة اسم Excel واسم الفصل.
فيما يلي رمز المصدر ، الكالسيوم ، وتم إجراء نافذة تصور أيضًا.
فئة excelread:
استيراد java.awt.list ؛ استيراد java.io.bytearrayoutputstream ؛ استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.ioexception ؛ import java.io.itputstream ؛ استيراد java.text.decimalformat ؛ java.text.simpleDateFormat ؛ import java.util.arraylist ؛ استيراد org.apache.poi.hssf.usermodel.hssfcell ؛ import org.apache.poi.hssf.usermodel.hssfdateUtil ؛ org.apache.poi.hssf.usermodel.hssfsheet ؛ استيراد org.apache.poi.hssf.usermodel.hssfworkbook ؛ import org.apache.poi.xssf.usermodel.xsssfcell ؛ import org.poi org.apache.poi.xsssf.usermodel.xssfsheet ؛ استيراد org.apache.poi.xssf.usermodel.xssfworkbook ؛ public class excelread {string path ؛ public string getPath () {return path ؛ DecimalFormat ("0") ؛ // سلسلة تنسيق الخلية الافتراضية الخاصة بسلسلة ثابتة ثابتة simpleatformat sdf = new SimplEdateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ // number private static static decimalformat nf = new decimalformat ("0.00") ؛ arraylist static static static <arrayList <Object>> readexcel (ملف الملف) {if (file == null) {return null ؛} if (file.getName (). قم بتخزين نتيجة الإرجاع في قائمة ArrayList ، وتشبه بنية التخزين مجموعة من أرقام * قوائم (0) .get (0) تعني 0 صفوف و 0 أعمدة في excel في الماضي */عام static arraylist <arbray>> readExcel2003 (ملف) Contlist ؛ Hssfworkbook wb = new hssfworkbook (new FileInputStream (ملف)) ؛ Hssfsheet sheet = wb.getsheetat (0) ؛ hssfrow row ؛ hssfcell ؛ value object ؛ for (int i = sheet.getfirstrownum () ، rowcount = 0 ؛ rowcount <sheet.getphysical sheet. <= row.getlastcellnum () ؛ j ++) {cell = row.getCell (j) ؛ if (cell == null || cell.getCellType () == hssfcell.cell_type_blank) {// عندما تكون الخلية فارغة إذا (j! = row.getlastcellnum () collist.add ("") ؛} متابعة ؛} التبديل (cell.getCelltype ()) {case xssfcell.cell_type_string: //system.out.println(i + "row" + j + "العمود هو نوع السلسلة") ؛ value = cell.getStringCellValue () ؛ break ؛ case xssfcell.cell_type_numeric: if ("@". equals (cell.getCellStyle (). .getDataFormatString ()))) {value = nf.format (cell.getNumericCellValue ()) ؛} آخر {value = sdf.format (hssfdateutil.getjavadate (cell. getnumericcellvalue ()) ؛ // + value.toString ()) ؛ break ؛ case xssfcell.cell_type_boolean: //system.out.println(i + "row" + j + "column is boolean type") ؛ القيمة = boolean.valueof (cell.getBooleanCellValue ()) ؛ break ؛ case xssfcell.cell_type_blank: //system.out.println(i + "row" + j + "العمود هو نوع فارغ") ؛ value = "" ؛ break ؛ default: //system.out.println(i + "row" + j + "العمود هو النوع الافتراضي") ؛ value = cell.toString () ؛} // end switch collist.add (value) ؛} // end switch for j rowlist.add (collist) ؛} // end for i return rowlist ؛} catch (استثناء e) {try> {arglist <erglist <arglist <arglist <arnist <erglist <arnist <erglist <erglist <erglist <erglist <erglist <erglist <argist <ergarlist <arraylist <arraylist <erborex> readexcel2007 ArrayList <ArrayList <Object >> () ؛ ArrayList <Object> Collist ؛ XSSFWorkBook WB = New XSSFWORKBOOK (New FileInputStream (file)) ؛ XSSFSHEET SEET = WB.GETSEETAT (0) ؛ XSSFROW ROW ؛ sheet.getPhysicalNumberOfRows () ؛ آخر {rowcount ++ ؛} لـ (int j = row.getFirstCellNum () ؛ j <= row.getlastcellnum () ؛ j ++) {cell = row.getCell (j) ؛ if (cell == null || cell.getCelltype () == hssfcell.cell_type) row.getlastcellnum ()) {// judge ما إذا كانت الخلية الأخيرة في الصفوف collist.add ("") ؛} متابعة ؛} التبديل (cell.getCellType ()) {case xssfcell.cell_type_string: //system.out.println(i + value = cell.getStringCellValue () ؛ break ؛ case xssfcell.cell_type_numeric: if ("@". equals (cell.getCellStyle (). .getDataFormatString ()))) {value = nf.format (cell.getNumericCellValue ()) ؛} آخر {value = sdf.format (hssfdateutil.getjavadate (cell. getnumericcellvalue ()) ؛ // + value.toString ()) ؛ break ؛ case xssfcell.cell_type_boolean: //system.out.println(i + "row" + j + "column is boolean type") ؛ القيمة = boolean.valueof (cell.getBooleanCellValue ()) ؛ break ؛ case xssfcell.cell_type_blank: //system.out.println(i + "row" + j + "العمود هو نوع فارغ") ؛ value = "" ؛ break ؛ default: //system.out.println(i + "row" + j + "العمود هو النوع الافتراضي") ؛ value = cell.toString () ؛} // end switch collist.add (value) ؛} // end for j rowlist.add (collist) ؛}. ملف (filePath) ؛ file [] files = root.listfiles () ؛ ArrayList fileList = new ArrayList () ؛ لـ (ملف الملف: الملفات) {if (file.isdirectory ()) {fileList.addall (getFiles (file.getabsolutepath ())) ؛} آخر {string newPath = file.getabsolutepath () path3) {string filepath = path3 ؛ arraylist fileList = getFiles (filePath) ؛ ArrayList <RayList> resultall = new ArrayList <RayList> () ؛ for (int i = 0 ؛ i <fileList.size () ؛ i ++) {String path = string) filelist.get graph (path) ؛ string [] path2 = path.split ("////") ؛ int num = result.get (0) .Size () ؛ ArrayList result2 = new ArrayList () ؛ for (int j = 0 ؛ j <num ؛ j ++) {result2.add (path2 [path2.length-2]) ؛ 0 ؛ j <num ؛ j ++) {result3.add (path2 [path2.length-3]) ؛} result.add (result2) ؛ result.add (result3) ؛ if (resultall.size () == 0) {resultall = result ؛ 0 ؛ k <result.get (j) .size () ؛ k ++) {resultall.get (j) .add (result.get (j) .get (k)) ؛}}}} writeexcel (resultall ، "d: /a.xls") ؛} null) {return ؛} hssfworkbook wb = new hssfworkbook () ؛ hssfsheet sheet = wb.createsheet ("sheet1") ؛ for (int i = 0 ؛ i <result.get (0) .size () ؛ i ++) {hssfrow row = sheet.creatow (i) ؛ لـ (int j = 0 ؛ j <result.size () ؛ j ++) {hssfcell cell = row.createcell ((قصيرة) j) ؛ cell.setCellValue (result.get (j) .get (i) (ioException e) {E.PrintStackTrace () ؛} byte [] content = os.tobytearray () ؛ ملف = ملف جديد (مسار) ؛ // يتم إنشاء موقع التخزين بعد إنشاء ملف Excel. outputStream fos = null ؛ try {fos = new FileOutputStream (file) ؛ wb.write (fos) ؛ os.close () ؛ fos.close () ؛} catch (استثناء e) {e.printstacktrace () ؛ {excelread.df = df ؛} static static simpledateformat getsdf () {return sdf ؛} setsdf public static static (simpledateformat sdf) {excelread.sdf = sdf ؛ {excelread.nf = nf ؛} arraylist static static public <RayList> Graph (مسار السلسلة) {file file = file new (path) ؛ arraylist <arraylist <object> ArrayList <string> buylist = جديد arraylist <string> () ؛ // تسلسل المشتري Arrayence <Tring> selllist = new ArrayList <string> () ؛ // SELER SENECENCE ARRAYLIST <SUBLE> VOL = NEW ARRAYLIST <DUBLE> ArrayList <String> () ؛ ArrayList <string> shareid = new ArrayList <String> () ؛ لـ (int i = 2 ؛ i <result.size () ؛ i ++) {for (int j = 0 ؛ j <result.get (i) .size () ؛ j ++) {// العمود 5 يمثل السعر ، والعمود 8 يمثل الوقت (j == 0) {String temp = (string). النتيجة. temp.split ("¥") ؛ price.add (double.valueof (الوحدات [1])) ؛} if (j == 7) {string temp = (string) result.get (i) .get (j) ؛ time.add (temp) ؛ // time.add ( result.get (i) .get (j)) ؛} إذا (j == 2) النتيجة ArrayList <raylist> () ؛ resultlist.add (shareid) ؛ resultlist.add (id) ؛ resultlist.add (قائمة الشراء) ؛ resultlist.add (selllist) ؛ resultlist.add (share) ؛ resultlist.add (price) ؛ resultlist.add (vol)ReadExcelBook (لنافذة التصور):
استيراد java.awt.eventqueue ؛ import javax.swing.jfilechooser ؛ استيراد javax.swing.jframe ؛ استيراد javax.swing.grouplayout ؛ import javax.swing.jlabel ؛ import javax.swing.grouplayout.alignment ؛ import javax.swing.jbutton ؛ java.awt.event.actionlistener ؛ استيراد java.awt.event.actionevent ؛ استيراد java.io.file ؛ فئة عامة readexcelbook {private jframe frame ؛ private jtextfield textfield ؛/*** إطلاق التطبيق. */public static void main (string [] args) {eventqueue.invokelater (new RunNable () {public void run () {try {readexcelbook window = new readExcelBook () ؛ window.frame.setVisible (true) ؛} catch (استثناء e) {eprintstacktrace () ؛}}}}} */public readexcelbook () {initialize () ؛}/*** تهيئة محتويات الإطار. */private void تهيئة () {frame = new jframe () ؛ frame.setBounds (100 ، 100 ، 450 ، 300) ؛ void actionperformed (actionevent e) {jfileChooser JFC = New JfileChooser () ؛ file.getabsolutepath () ؛ textfield.settext (path) ؛ excelread er = new excelread () ؛ er.readbook (path) ؛}}) ؛ textfield = new jtextfield () ؛ textfield.setColumns (10) jlabel ("/u5199/u5165/u4e86d/u76d8/u4e0b/u7684a.xls/u54c8") grouplayout.createparallelgroup (محاذاة. 295 ، grouplayout.preferred_size) .addcomponent (زر) .addComponent (زر) .addgap (18) .AdComponent (Textfield ، grouplayout.preferred_size ، grouplayout.default_size ، grouplayout.predred_size) .addgap (35) .addComponent (lbldaxls) .adddconterg. ) ؛ frame.getContentPane (). setLayout (grouplayout) ؛}}نتائج التشغيل:
لخص
ما سبق هو كل محتوى هذه المقالة حول كتابة Java كتابة وكتابة مشاركة رمز المصدر Excel ، وآمل أن تكون مفيدة للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات المتعلقة بـ JAVA على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!