Эти два дня я помог учителю сделать базу данных и импортировать все данные экспериментальных транзакций в базу данных. Но я не хотел оставаться в лаборатории каждый день. Атмосфера была слишком удручающей, поэтому я подумал о том, чтобы сначала прочитать данные в Excel и привести их в лабораторию для их импорта.
Данные оказались такими. Различные эксперименты имеют специальную папку. Есть папки для разных классов под папкой имени эксперимента. Папка даты класса хранится в данных Excel для экспериментов в разное время. Оригинальный Excel не имел класса и времени. Теперь вам нужно добавить эту информацию в качестве столбца, прочитав имя Excel и имя класса.
Ниже приведен исходный код, хе -хе, и было также сделано окно визуализации.
Класс ExcelRead:
Импорт java.awt.list; импорт java.io.bytearrayoutputstream; import java.io.file; import java.io.fileinputstream; импорт java.io.fileOutputStream; импорт java.io.ioexception; импорт java.io.outputeream; importmalformate. java.util.arraylist; import org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfdateutil; импорт org.apache.poi.hssf.usermodel.hssfrow; org.apache.poi.hssf.usermodel.hssfsheet; import org.apache.poi.hssf.usermodel.hssfwork; import org.apache.poi.xssf.usermodel.xssfcell; импорт org.apache.poi.xsssf.UserModel; org.apache.poi.xssf.usermodel.xssfsheet; import org.apache.poi.xssf.usermodel.xssfwork; DecimalFormat ("0"); // Дата форматирования ячейки по умолчанию строка частной статики SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); // Номер формата Private Static Decimalformat nf = new DecimalFormat ("0,00"); public Static ArrayList <arraylist <object >> readexcel (файл файла) {if (file == null) {return null;} if (file.getName (). endswith ("xlsx")) {// ecxel2007 return readexcel2007 (file);} else {// ecxel2003 return readexcel2007 (file); Store the return result in ArrayList, and the storage structure is similar to a two-digit array* lists.get(0).get(0) means 0 rows and 0 columns in Excel in the past */public static ArrayList<ArrayList<Object>> readExcel2003(File file){try{ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();ArrayList<Object> Collist; HSSFWorkBook WB = New HSSFWorkBook (New FileInputStream (File)); HSSFSHEET LEALE = WB.GETSHEETAT (0); HSSFROW ROW; HSSFCELL CLOTE; Значение объекта; для (int i = sheet.getfirSthounum (), rowCount = 0; rowcount <sheet.getfysicalSnumbrows (); sheet.getRow (i); collist = new ArrayList <Object> (); if (row == null) {// Когда поведение чтения пустое, если (i! <= row.getlastCellnum (); j ++) {cell = row.getCell (j); if (cell == null || cell.getCelltype () == hssfcell.cell_type_blank) {// Когда ячейка пуста, если (j! collist.add ("");} продолжить;} switch (cell.getCelltype ()) {case xssfcell.cell_type_string: //system.out.println(i + "row" + j + "Столбец строки типа"); value = cell.getStringCellValue ();; Break; case xssfcell.cell_type_numeric: if ("@". .getDataFormatString ())) {value = nf.format (cell.getNumericCellValue ());} else {value = sdf.format (hssfdateUtil.getJavadate (cell .getNumericCellValue ());} // System.out.println (i + "row" + j/ j/ j/ j/ j/ j/ j/ j/ jtsformtmt numbers witrsformats () numbersformats () numbersformats ());} // system. // + value.toString ()); Break; case xssfcell.cell_type_boolean: //system.out.println(i + "row" + j + "Столбец - булево -тип"); value = 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 для j rowlist.add (collist);} // end for i return rowlist;} catch (Exception e) {return nul Arraylist <arraylist <object >> (); ArrayList <object> collist; xssfworkbook wb = new xssfworkbook (new FileInputStream (файл)); xssfsheet sheet = wb.getsheetat (0); xssfrow row; xssfcell cell; object value; для (int i = sheet.igletfirstrUnm (); sheet.getPhysicalNumberOfRows (); else{rowCount++;}for ( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){cell = row.getCell(j);if(cell == null || cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){//When the cell is empty if(j != row.getlastcellnum ()) {// Судья, является ли это последней ячейкой в row collist.add ("");} продолжение;} switch (cell.getcelltype ()) {case xssfcell.cell_type_string: //system.out.println(i + "row" + j + " value = cell.getStringCellValue ();; Break; case xssfcell.cell_type_numeric: if ("@". .getDataFormatString ())) {value = nf.format (cell.getNumericCellValue ());} else {value = sdf.format (hssfdateUtil.getJavadate (cell .getNumericCellValue ());} // System.out.println (i + "row" + j/ j/ j/ j/ j/ j/ j/ j/ jtsformtmt numbers witrsformats () numbersformats () numbersformats ());} // system. // + value.toString ()); Break; case xssfcell.cell_type_boolean: //system.out.println(i + "row" + j + "Столбец - булево -тип"); value = 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 коммутатор collist.add (value);} // end для j rowlist.add (collist);} // end for i return rowlist;} // end for i return rowlist;} catch (exception e) {system.out.println ("Exception neply null;}} retatic arrayLile getFitle getFILELN (" exception nefly root; File (filePath); file [] files = root.listFiles (); ArrayList filelist = new ArrayList (); для (файл файла: файлы) {if (file.isdirectory ()) {filelist.addall (getFiles (file.getabsolutePath ()));} else {string newpath = file.getabsolutepath (); if (newpath.contains ("transaction") {filelistpath (); if (newpath.contains ("transaction") {filelist.add (); readbook (String path3) {string filePath = path3; arraylist filelist = getFiles (filePath); ArrayList <ArrayList> resultAll = new ArrayList <ArrayList> (); для (int i = 0; i <fileList.size (); i ++) {String path = (string) filelist.get (i); system.ourt. График (path); string [] path2 = path.split ("////"); int num = result.get (0) .size (); arraylist result2 = new ArrayList (); для (int j = 0; j <num; j ++) {result2.add (path2 [path2.length-2]);} result-result-result3 = new arramelist (); 0; j <num; j ++) {result3.add (path2 [path2.length-3]);} result.add (result2); result.add (result3); if (resultAll.size () == 0) {resultAll = result;} els 0; k <result.get (j) .size (); k ++) {resultall.get (j) .add (result.get (j) .get (k));}}}} writeexcel (resultall, "d: /a.xls");} public static void writeexcel (arraylist <arraylist> result, string path) {if result == == result == result == result = null) {return;} hssfworkbook wb = new hssfworkbook (); hssfsheet sheet = wb.createsheet ("лист1"); для (int i = 0; i <result.get (0) .size (); i ++) {hssfrow row = sheet.createrow (i); for (int j = 0; j <result.size (); j ++) {hssfcell cell = row.createcell ((short) j); cell.setcellvalue (result.get (j) .get (i) .toString ());}} bytearrayOutputStream oS = new BeaterRayOutputStream (); wb; wb; wb; wb; wb; wb. (IoException e) {e.printstacktrace ();} byte [] content = os.tobytearray (); file file = new File (path); // местоположение хранилища после создания файла Excel. OutputStream fos = null; try {fos = new fileOutputStream (file); wb.write (fos); os.close (); fos.close ();} catch (Exception e) {e.printstacktrace ();}} public static decimalformat getdf () {return df;} public void void static getFormat getDf () {return df;} public void void void statiforformat getDf () {return df; {ExcelRead.df = df;} public static simpleDateFormat getSdf () {return sdf;} public static void setsdf (simpledateformat sdf) {ExcelRead.Sdf = sdf;} public static decimalFormat getNf () {return nf;} public void void setNf (decimAlformat getNf () {return nf;} public static void setnf (decimAlformat getNf () {return nf;} public void void void nf;} public static arraylist <arraylist> graph (string path) {file file = new file (path); arraylist <arraylist <object >> result = ExcelRead.ReadExcel (file); ArrayList <Double> pright = new ArrayList <wroud> (); // reseexcel arraylist <string> new raylist <string> (); // series arraylist arraylist <string> raylist <string> (); ArrayList <String> (); // последовательность покупателя ArrayList <String> sellList = new ArrayList <String> (); // последовательность продавца ArrayList <Double> vol = new ArrayList <way> (); // Trading Volume ArrayList <string> share = new ArrayList <string> (); // raylist ArrayList <String> arrayList <Strin ArrayList <string> (); for (int i = 2; i <result.size (); i ++) {for (int j = 0; j <result.get (i) .size (); j ++) {// столбец 5 представляет цену, а столб. result.get (i) .get (j); shareId.add (temp);} if (j == 5) {// pount.add ((string) result.get (i) .get (j)); string temp = (string) result.get (i) .get (j); temp.split ("¥"); price.add (double.valueof (units [1]));} if (j == 7) {string temp = (string) result.get (i) .get (j); time.add (temp); // time.add ((String) result.get (i) .get (j));} if (j == 1) {buy striled). result.get (i) .get (j));} if (j == 2) {selllist.add ((string) result.get (i) .get (j));} if (j == 6) {vol.add (double.valueof ((string) result.get (i) .get (j)));} if (j == 4) {share.add ((string) result.get (i) ArrayList <ArrayList> (); ResultList.Add (chareID); resultList.Add (id); resultList.Add (buylist); resultStil.Add (sellList); resultStil.Add (share); resultStil.Add (цена); resultStil.Add (vol); resultStist.Add (время); return -result;}};readexcelbook (для окна визуализации):
Импорт java.awt.eventqueue; импортировать javax.swing.jfilechooser; импорт javax.swing.jframe; import javax.swing.grouplayout; импорт javax.swing.jlabel; импорт javax.swing.grouplayout.alignment; импорт javax.swing.jbutton; java.awt.event.actionlistener; import java.awt.event.actionevent; import java.io.file; public class 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 (Exception e) {e.printStackTrace ();}}}); */public ReadExcelBook () {initiaze ();}/*** Инициализируйте содержимое кадра. */private void initialize () {frame = new jframe (); frame.setBounds (100, 100, 450, 300); Frame.setDefaultCloseoperation (jframe.exit_on_close); jbutton button = new jbutton ("/u9009/u62e9/u6587/u4ef6"); void actionperformed (actionevent e) {jfilechooser jfc = new jfilechooser (); jfc.setfileselectionmode (jfilechooser.files_and_directories); jfc.showdialog (new jlabel (), "select"); file.getabsolutepath (); textfield.settext (path); ExcelRead er = new ExcelRead (); er.ReadBook (path);}}); TextField = new JTextField (); TextField.SetColumns (10); Jlabel lbldaxls = new Jlabel ("/u5199/u5165/u4e86d/u76d8/u4e0b/u7684a.xls/u54c8"); grouplayout.createParalleLgroup (Alignment.Leading) .AddGroup (grouplayout.createSequentialGroup () .Addgap (26) .AddGroup (grouPlayout.createParallelGroup (alignment.Leading) .AddComponent (lbldaxls) .AddComponent (groupree.plesize. Grouplayout.preferred_size) .addcomponent (кнопка)). Addcontainergap (113, short.max_value))); grouplayout.seterticalgroup (grouplayout.createParallelGroup (alignment.Leading) .AddGroup (grouplayout.croueteSquentalGroup (). .Addgap (18) .AddComponent (TextField, GrouPlayout.preferred_size, grouplayout.default_size, grouplayout.preferred_size) .Adgap (35) .AddComponent (lbldaxls) .AddContainergap (119, short.max_vonue))) ); frame.getContentPane (). setlayout (grouplayout);}}Результаты работы:
Суммировать
Выше приведено все содержание этой статьи о том, как Java написал и написал обмен исходным кодом Excel, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на темы, связанные с Java на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!