線材匯出excel表過多層資料多行多列有序顯示表單

2022-09-02 00:36:12 字數 3407 閱讀 9176

開發中對多層級資料**進行匯出excel**功能開發:

資料是多層級的,陣列內多層陣列和物件值等。所以首先對資料進行了處理

然後匯出的**雖然只支援一行顯示,這裡做了hack,把資料中按照一行顯示,然後父級的資料除了第一項顯示其它為null進行處理後匯出excel顯示的資料就比較直觀了

直接上**:

1首先是匯出事件:

alert('匯入中。。。')

this.fniniteceltable()

// this.export2excel()//這裡不能再放此處-當資料量龐大資料沒格式化完就會走這裡

},2:開始處理資料:

fniniteceltable()

this.exceldata[i].lj_detail =[//qingkong

]console.log(v)

if(v.lj_detail))

this.exceldata[i].lj_detail.push([

val[0],val[1],val[7],val[4],val[5],val[6]

])//第三層資料 --這邊建立後會有問題 --只有最後一項lj_detail內的資料依此匯入進去

val[2].foreach((value,k)=>)

this.exceldata[i].lj_detail.push([

value[2] + value[0], value[1],value[7],value[4],value[5],value[6]

])})

})}else

})//中間事件:--把所有的lh_detail 由物件程式設計陣列

//-第二次重組第資料 :二層資料匯入到一層資料

var temp =

this.exceldata.map((val,index)=>)

}else)}})

})this.exceldata = temp

// console.log('exceldate update format ==',this.exceldata)

//解析最後一列陣列

this.export2excel()//放此處安全

},

注釋掉的是多行顯示但是最後一列是解析字串後按照乙個列顯示對應的每項資料集中在最後一項陣列內的

後來優化的是把最後乙個列內的所有值按照規律併排在資料內一次排列,等於把陣列內的資料提煉出來一次放在最外層真正程式設計所有資料居於同一層級

3:資料寫入到excel:

export2excel()  = require('@/excel/export2excel'); //這裡必須使用絕對路徑,使用@/+存放export2excel的路徑

const theader = ['多工製令單','用量','日期','產品名稱','產品規格','用料-名',' 線材' ,'名稱','單位用量','總用量', '單位' , '規格' , '備註']; // 匯出的表頭名資訊

//這裡是要匯出的資料的鍵,根據處理後的資料一次往後排列

const filterval = ['zl_no','prodtqtyfrom', 'date', 'pd_id','pd_name','series','zhanwei','lj_detailname','lj_detaildanwy','lj_detailzongy','lj_detaildanwei','lj_detailguige','lj_detailbeiz']; // 匯出的表頭欄位名,需要匯出**欄位名

const list = that.exceldata;

const data = that.formatjson(filterval, list);

export_json_to_excel(theader, data, '多工製令單excel');// 匯出的**名稱,根據需要自己命名

this.fnajaxupdata()//列印完成後一定要重新重新整理一下資料,不然搜尋框將不能用,搜尋框再次搜尋資料內層的資料會被format而導致的亂掉

})},

4:這一步別忘了 要格式化每個具體資料才會正常每項都顯示匯出到excel

//格式轉換

formatjson(filterval, jsondata)

return (v[j])

}))},

附加乙個filtertab

// filtertab(objarr))

// return temp

// },

注意事項,ecel**匯出的規格是按外掛程式規格,主要是頭部和資料來源,注意兩個要同步,並且資料來源是要填寫資料內有的key:

const theader = ['多工製令單','用量','日期','產品名稱','產品規格','用料-名','  線材' ,'名稱','單位用量','總用量', '單位' , '規格' , '備註']; // 匯出的表頭名資訊

//這裡是要匯出的資料的鍵,根據處理後的資料一次往後排列

const filterval = ['zl_no','prodtqtyfrom', 'date', 'pd_id','pd_name','series','zhanwei','lj_detailname','lj_detaildanwy','lj_detailzongy','lj_detaildanwei','lj_detailguige','lj_detailbeiz']; // 匯出的表頭欄位名,需要匯出**欄位名

下面顯示結果:

根據時間選擇到時間內的所有多工製令單,可以收縮篩選指定的資料,再匯出的話只會匯出搜尋後的資料,第一層展開的子項是線材表和剝皮鍍錫表,其中剝皮鍍錫表內包含207開頭的一條或數條表(可勾選操作)

207表下面有多個層級其它資料,層級關係按照 『 -- 』  表示  - 1層  --2層 ---3層 ---- 4層 依此類推

搜尋到指定列

匯出的資料-初版最後一列陣列(207內所有子線材)按一列顯示

優化後的多行多列顯示--**的實際效果:

資料匯出Excel表 資料庫資料匯出

public static hashmapcolumn new hashmap static param table 要匯出的表 param name 匯出的excel表名稱 表頭 throws exception public void createexcel string table,strin...

Mysql資料表匯出資料為excel

筆者最近由於公司人員特殊需要,將mysql資料庫中特定表匯出為excel格式資料儲存。話絮休煩,以下為步驟 1 cmd開啟資料庫,mysql uroot p 2 選擇資料庫,要是不知道具體名稱 鍵入命令 show databases 切換為目標資料庫,use databasename 3 選擇表,要...

使用POI把資料匯出excel表

在web開發中,有乙個經典的功能,就是資料的匯入匯出。特別是資料的匯出,在生產管理或者財務系統中用的非常普遍,因為這些系統經常要做一些報表列印的工作。而資料匯出的格式一般是excel。現在主流的操作excel檔案的開源工具有很多 用得比較多的就是 apache 的poi 及jexcelapi 這裡我...