Excel批量匯入工具(註解形式)

2021-09-27 09:10:08 字數 4195 閱讀 6042

工具類: eexeltool

public class exceltool  else if (filename.endswith(xls))  else 

array = read(book);

} catch (exception e)

// poi 3.9乃自動關閉,故而無book.close()方法

return array;

}/**

* 將檔案的資料解析為json

*/private jsonarray read(workbook book)

keymap.put(j, val);

}if (keymap.isempty())

// 獲取每行json物件的值

jsonarray array = new jsonarray();

// 如果首行與尾行相同,表明只有一行,返回表頭資料

if (rowstart == rowend)

array.add(object);

return array;

}for (int i = rowstart + 1; i <= rowend; i++)

}if (sb.tostring().length() > 0)

}return array;

}/**

* 獲取**單元格資料

*/private string getvalue(cell cell)

// 0. 數字 型別

if (cell.getcelltype() == cell.cell_type_numeric)

cell.setcelltype(cell.cell_type_string);

string val = cell.getstringcellvalue() + "";

val = val.touppercase();

if (val.contains("e"))

return val;

}// 1. string型別

if (cell.getcelltype() == cell.cell_type_string)

return val.trim();

}// 2. 公式 cell_type_formula

if (cell.getcelltype() == cell.cell_type_formula)

// 4. 布林值 cell_type_boolean

if (cell.getcelltype() == cell.cell_type_boolean)

// 5. 錯誤 cell_type_error

return "";

}/**

* 獲取每個物件的資料

*/private t getbean(classc, jsonobject obj) throws exception

string val = null;

if (obj.has(cname))

// 獲取具體值

field.setaccessible(true);

// 其餘情況根據型別賦值

string fieldclassname = field.gettype().get******name();

try else if ("boolean".equalsignorecase(fieldclassname)) else if ("int".equalsignorecase(fieldclassname) || "integer".equals(fieldclassname)) else if ("double".equalsignorecase(fieldclassname)) else if ("long".equalsignorecase(fieldclassname)) else if ("bigdecimal".equalsignorecase(fieldclassname))

} catch (exception e) }}

return t;

}/**

* 將excel檔案解析為指定物件集合

*/public listgetbeanlist(classc, file file)

// 解析listlistlist = new arraylist();

for (int i = 0; i < arr.size(); i++) catch (exception e)

}return list;

}/**

* excel匯出

** @param title 表名稱

* @param rowlist 匯出每行資料

*/public void export(string title, list> rowlist)

sxssfworkbook book = new sxssfworkbook();

sheet sheet = book.createsheet(title);

drawing patriarch = sheet.createdrawingpatriarch();

cellstyle style = book.createcellstyle();

// 資料居左

style.setalignment(hssfcellstyle.align_left);

// 寫資料

for (int i = 0; i < rowlist.size(); i++) else }}

try

}file file = new file(path + title + xlsx);

if (!file.exists())

fileoutputstream fos = new fileoutputstream(file);

bytearrayoutputstream ops = new bytearrayoutputstream();

book.write(ops);

fos.write(ops.tobytearray());

fos.close();

} catch (exception e)

}/**

* 匯出寫

*/private void setexcelimg(sxssfworkbook wb,

drawing patriarch, int rowindex, int cloumindex, url url)

// 設定位置

xssfclientanchor anchor = new xssfclientanchor(0, 0, 0, 0,

cloumindex, rowindex, cloumindex + 1, rowindex + 1);

anchor.setanchortype(0);

patriarch.createpicture(anchor, wb.addpicture(

outputstream.tobytearray(), hssfworkbook.picture_type_jpeg));

outputstream.close();

} catch (exception e)

}public void main(string args) */

}/**

* 匯出寫資料

*/public void setexcelvalue(cell cell, object value, cellstyle style) else else if (value instanceof bigdecimal) else

cell.setcellstyle(style);}}

}

註解類:

@target(elementtype.field)

@retention(retentionpolicy.runtime)

public @inte***ce exceldesc

使用方法:註解類註解到實體類上

@exceldesc("這裡填寫excel裡面的")

他們必須相對應,才能匯入的時候匯入進去

還有就是需要注意的事,有時候資料型別是**的時候,在實體類中,使用float或者double匯入不進去,那就使用string型別

java批量匯入Excel

util包 public class excelhelp catch exception ex for int numsheet 0 numsheet workbook.getnumberofsheets numsheet 迴圈行row for int rownum 1 rownum sheet.g...

Excel匯入校驗工具

1.需求 專案中excel 匯入匯出框架是用的poi 新專案推薦使用easyexcel excel匯出比較簡單,比較麻煩的是excel匯入,因為幾乎每個欄位都必須校驗是否合法,所有欄位的校驗都寫在一起的話,會很亂,特別是字段很多,業務校驗規則有比較複雜的時候,很容易出bug,後續也很難維護。exce...

Java使用poi批量匯入excel

本文為原創 經過測試可以讀取excel中的文字,這裡是按照7x 每行有7列 也可以自行設定 一 建立list用來儲存excel中的行和列,傳入本地檔案絕對路徑,或者伺服器上相對路徑,匯入可使用excel2007或excel2003 public static listreadexcel string...