工具類: 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...