目標excel檔案內容如下
由於a列的「y00001」和c列的資料是b4,b5,b6共用的資料項,我理想中的情況是easyexcel在做讀取操作時,在讀取三行資料時都會把a列和c列的資料給讀出來。但是在讀取的時候,只有第一次讀取能把a、c列的資料讀取出來,後面兩次讀取a、c列的值為空。目前沒有從根本上找到原因,那就只能從程式的設計上去解決這個問題了。
通過easyexcel讀取目標檔案
easyexcel.read("d:\\users\\admin\\documents\\tencent files\\1430424583\\filerecv\\demo.xls", new faguisheet()).sheet().doread();
解決思路,如果a、c列值找不到了的話,就判定這是個跨行資料,就復用之前讀取的資料,需要用乙個map集合去儲存之前讀取的有效資料。
readlistener實現類
class faguisheet extends analysiseventlistener>
if (stringutils.isblank(weifantiaokuan))
if (stringutils.isblank(chufayiju))
if (stringutils.isblank(weifachengdu))
if (stringutils.isblank(consequence))
if (stringutils.isblank(chufabiaozhun))
model.setfaguibianhao(faguibianhao);
model.setweifaxingwei(weifaxingwei);
model.setweifantiaokuan(weifantiaokuan);
model.setchufayiju(chufayiju);
model.setweifachengdu(weifachengdu);
model.setconsequence(consequence);
model.setchufabiaozhun(chufabiaozhun);
// 將資料放入list
datas.add(model);
// 復用跨行資料的實現
string uniquekey = o.get(0);
// 如果a列的值為空,那麼說明這是跨行列,如果取的值不是空,那說明這是第一次讀取跨行列資料
// 如果precontent為空,說明這是第一次讀取sheet**的資料
if (!stringutils.isblank(uniquekey) || precontent == null)
}/**
* **資料解析完之後呼叫
*/@override
public void doafterallanalysed(analysiscontext analysiscontext) }}
資料插入成功
當前easyexcel版本2.1.3,不知道後續版本會不會修復這個問題,先在這記錄一下
EasyExcel 固定 凍結 單元格
sheet.createfreezepane int cellnum,int rownum,int firstcellnum,int firstrollnum 四個引數的含義 表示要凍結的列數 表示要凍結的行數 表示右邊區域 可見 的首列序號 表示下邊區域 可見 的首行序號 四個引數分別代表 cel...
單元格跨行合併,單元格跨列合併
protected voidgridview1 onrowcreated object sender,gridviewroweventargs e if e.row.rowtype datacontrolrowtype.datarow region 合併單元格 合併某一列中的某些行 合併單元格 合併...
ExtJs grid 合併單元格 跨行跨列
在grid載入完成後直接呼叫此方法,需要注意的是,合併的單元格值必須一樣。2 合併單元格 3 param grid 要合併單元格的grid物件 4 param cols 要合併哪幾列 1,2,4 5 67function mergecells grid,cols 25 26 27var rowspa...