WAggridVue

Props

Name Type Default value Required? Description
opt Object - Yes 輸入資料設定物件
opt.keys Array - Yes 輸入資料各欄位keys
opt.rows Array - Yes 輸入資料列,各列為物件,內含各欄位keys之值,例[{},{},...,{}]
opt.kpHead Object {} No 輸入key對應head物件,預設各key值為本身key值
opt.defHeadMinWidth Number null No 輸入cell預設最小寬度數字,預設為null
opt.defHeadMaxWidth Number null No 輸入cell預設最大寬度數字,預設為null
opt.kpHeadWidth Object {} No 輸入key對應cell之寬度物件,預設各key值為undefined
opt.defHeadAlignH String 'center' No 輸入head預設之左右對齊字串,預設為'center'
opt.kpHeadAlignH Object {} No 輸入key對應head之左右對齊字串物件,預設各key值為defHeadAlignH
opt.defHeadSort Boolean true No 輸入head預設之是否允許排序布林值,預設為true
opt.kpHeadSort Object {} No 輸入key對應head之是否允許排序物件,預設各key值為defHeadSort
opt.defHeadSortMethod function|String null No 輸入head預設之排序方式函數或字串,若需自行定義則給予函數,若需使用內建的自動轉型判斷方式則給予'auto'字串,預設為null
opt.kpHeadSortMethod Object {} No 輸入key對應head之排序方式函數或字串,若需自行定義則給予函數,若需使用內建的自動轉型判斷方式則給予'auto'字串,預設各key值為defHeadSortMethod
opt.kpHeadFixLeft Object {} No 輸入key對應head之是否固定於左側物件,預設各key值為false
opt.defHeadFilter Boolean true No 輸入head預設之是否允許過濾布林值,預設為true
opt.kpHeadFilter Object {} No 輸入key對應head之是否允許過濾物件,預設各key值為defHeadFilter
opt.defHeadFilterType String 'num' No 輸入head預設過濾器字串,可選'num'、'text'、'time'、'set',預設為'num'
opt.kpHeadFilterType Object {} No 輸入key對應head之過濾器物件,可使用'num'、'text'、'time'、'set',預設各key值為'num'
opt.defHeadDrag Boolean true No 輸入head預設之是否允許拖曳布林值,預設為true
opt.kpHeadDrag Object {} No 輸入key對應head之是否允許拖曳物件,預設各key值為defHeadDrag
opt.kpHeadCheckBox Object {} No 輸入key對應head與key的各列是否使用核選方塊物件,預設各key值為false
opt.kpHeadFocusHighlight Object {} No 輸入key對應key的各列於獲得焦點時是否高亮顯示物件,預設各key值為true
opt.kpHeadHide Object {} No 輸入key對應head是否隱藏物件,預設各key值為false
opt.kpRowStyle Object {} No 輸入key對應row style之物件,可設定各key欄之函數,函數給予cell值需回傳之row style,預設各key值為undefined
opt.kpRowDrag Object {} No 輸入key對應col之是否能拖曳排序物件,預設各key值為false;拖曳排序後依新列序更新opt.rows,各列保留全部欄位(含不在opt.keys內者,例如供kpCellEditable函數判斷之旗標);回呼rowDragEnd、rowDragLeave、rowDragChange收到之row為被拖曳之整列,rows為依opt.keys提取之新列序數據副本(同getNowData,就地修改不影響表格與opt.rows)
opt.genRowsPinnTop function null No 輸入產生置頂rows函數,輸入為表內全部數據,預設為null
opt.genRowsPinnBottom function null No 輸入產生置底rows函數,輸入為表內全部數據,預設為null
opt.kpColStyle Object {} No 輸入key對應col style之物件,可設定各key欄之col style,預設各key值為undefined
opt.kpColSpan Object {} No 輸入key對應col span之物件,可設定各key欄之col span,預設各key值為undefined
opt.defCellAlignH String 'center' No 輸入cell預設之左右對齊字串,預設為'center'
opt.kpCellAlignH Object {} No 輸入key對應cell之左右對齊字串物件,預設各key值為defCellAlignH
opt.defCellEditable Boolean false No 輸入cell預設之是否可編輯布林值,預設為false
opt.kpCellEditable Object {} No 輸入key對應cell之是否可編輯物件,各key值可為布林值或函數,預設各key值為defCellEditable;值原樣指給ag-grid之colDef.editable,故語意同ag-grid:布林值代表整欄是否可編輯,函數簽名為(params)=>boolean,params同ag-grid之EditableCallbackParams(含node、data、column、colDef、api、context),對每個儲存格逐列求值,回傳true代表該儲存格可編輯(可據以做到逐列唯讀),其他型態(非布林值非函數)視為不可編輯;ag-grid之雙擊、F2、鍵入編輯與元件之貼上(Ctrl+V、pasteText)皆依同一判斷,貼上時唯讀之儲存格略過不寫入(其餘儲存格照寫,欄位索引照常遞增),各儲存格之判斷皆於元件寫入前完成(同一次貼上先寫入之儲存格不影響後面儲存格之判斷),函數須無副作用;貼上時函數若拋錯,該儲存格視為不可編輯並略過(不使整批貼上失敗),同一次貼上同一欄於console以`[w-aggrid-vue] pasteText: kpCellEditable[key] threw, ...`說明一次;以鍵盤Ctrl+V自編輯器開啟中之儲存格貼上時,編輯器會先提交瀏覽器原生貼入之文字,函數看到的是提交後之資料
opt.kpCellFormat Object {} No 輸入key對應cell之值格式化函數物件,函數簽名為(value, key, row, params),回傳顯示字串,回傳值不經套件轉換直接使用,回傳null或undefined代表不格式化維持原值;所有原值(含null、undefined、空字串)皆原樣傳入,空值之呈現由呼叫端於函數內自行決定;作用於顯示與下載(下載時row同為該列完整數據、params為null),排序與過濾仍依原值;與cell-render slot可並用,slot props之value為原值、valueFormatted為格式化值,預設各key值為undefined
opt.kpConvertKeysWhenUploadData Object {} No 輸入上傳Excel檔案時將檔案表頭名稱轉為欄位key之對照物件,例如{ '製造商': 'make' },於uploadData之beforeUpload之前套用,轉換後與檔案既有表頭同名時依欄序後者覆蓋,預設{}
opt.rowsChange function ()=>{} No 輸入rows change之觸發事件,預設為()=>{}
opt.rowClick function ()=>{} No 輸入row click之觸發事件,預設為()=>{}
opt.rowDbClick function ()=>{} No 輸入row double click之觸發事件,預設為()=>{}
opt.rowChange function ()=>{} No 輸入row change之觸發事件,預設為()=>{}
opt.rowChecked function ()=>{} No 輸入row checked之觸發事件,需使用kpHeadCheckBox開啟指定key的head與對應rows使用checkbox,預設為()=>{}
opt.rowMouseEnter function ()=>{} No 輸入row mouseenter之觸發事件,預設為()=>{}
opt.rowMouseLeave function ()=>{} No 輸入row mouseleave之觸發事件,預設為()=>{}
opt.cellClick function ()=>{} No 輸入cell click之觸發事件,預設為()=>{}
opt.cellDbClick function ()=>{} No 輸入cell double click之觸發事件,預設為()=>{}
opt.cellChange function ()=>{} No 輸入cell change之觸發事件,預設為()=>{}
opt.cellMouseEnter function ()=>{} No 輸入cell mouseenter之觸發事件,預設為()=>{}
opt.cellMouseLeave function ()=>{} No 輸入cell mouseleave之觸發事件,預設為()=>{}
opt.filterChange function ()=>{} No 輸入filter change之觸發事件,於掛載與filterall變更時(from為'filterall')、表頭過濾變更時(含setHeadFilter、clearHeadFilter、clearHeadFilterAll,from為'heads')各觸發1次,傳入{ from, filterall, flts, isFilter },flts為觸發後讀取當下之生效中過濾模型陣列(依opt.keys之順序,含隱藏欄),元件或ag-grid已銷毀後不觸發,預設為()=>{}
opt.autoFitColumn Boolean false No 輸入當表格尺寸變更時自動調整欄寬布林值,預設false
opt.language String 'en' No 輸入指定語系字串,可選'en'、'zh-tw'、'zh-cn',預設為'en'
height Number 300 No 表格高度,單位為px,預設300
filterall String '' No 輸入對全表數據進行過濾之字串,預設為''

Description:

Props

Name Type Default value Required? Description
opt Object - Yes 輸入資料設定物件
opt.keys Array - Yes 輸入資料各欄位keys
opt.rows Array - Yes 輸入資料列,各列為物件,內含各欄位keys之值,例[{},{},...,{}]
opt.kpHead Object {} No 輸入key對應head物件,預設各key值為本身key值
opt.defHeadMinWidth Number null No 輸入cell預設最小寬度數字,預設為null
opt.defHeadMaxWidth Number null No 輸入cell預設最大寬度數字,預設為null
opt.kpHeadWidth Object {} No 輸入key對應cell之寬度物件,預設各key值為undefined
opt.defHeadAlignH String 'center' No 輸入head預設之左右對齊字串,預設為'center'
opt.kpHeadAlignH Object {} No 輸入key對應head之左右對齊字串物件,預設各key值為defHeadAlignH
opt.defHeadSort Boolean true No 輸入head預設之是否允許排序布林值,預設為true
opt.kpHeadSort Object {} No 輸入key對應head之是否允許排序物件,預設各key值為defHeadSort
opt.defHeadSortMethod function|String null No 輸入head預設之排序方式函數或字串,若需自行定義則給予函數,若需使用內建的自動轉型判斷方式則給予'auto'字串,預設為null
opt.kpHeadSortMethod Object {} No 輸入key對應head之排序方式函數或字串,若需自行定義則給予函數,若需使用內建的自動轉型判斷方式則給予'auto'字串,預設各key值為defHeadSortMethod
opt.kpHeadFixLeft Object {} No 輸入key對應head之是否固定於左側物件,預設各key值為false
opt.defHeadFilter Boolean true No 輸入head預設之是否允許過濾布林值,預設為true
opt.kpHeadFilter Object {} No 輸入key對應head之是否允許過濾物件,預設各key值為defHeadFilter
opt.defHeadFilterType String 'num' No 輸入head預設過濾器字串,可選'num'、'text'、'time'、'set',預設為'num'
opt.kpHeadFilterType Object {} No 輸入key對應head之過濾器物件,可使用'num'、'text'、'time'、'set',預設各key值為'num'
opt.defHeadDrag Boolean true No 輸入head預設之是否允許拖曳布林值,預設為true
opt.kpHeadDrag Object {} No 輸入key對應head之是否允許拖曳物件,預設各key值為defHeadDrag
opt.kpHeadCheckBox Object {} No 輸入key對應head與key的各列是否使用核選方塊物件,預設各key值為false
opt.kpHeadFocusHighlight Object {} No 輸入key對應key的各列於獲得焦點時是否高亮顯示物件,預設各key值為true
opt.kpHeadHide Object {} No 輸入key對應head是否隱藏物件,預設各key值為false
opt.kpRowStyle Object {} No 輸入key對應row style之物件,可設定各key欄之函數,函數給予cell值需回傳之row style,預設各key值為undefined
opt.kpRowDrag Object {} No 輸入key對應col之是否能拖曳排序物件,預設各key值為false;拖曳排序後依新列序更新opt.rows,各列保留全部欄位(含不在opt.keys內者,例如供kpCellEditable函數判斷之旗標);回呼rowDragEnd、rowDragLeave、rowDragChange收到之row為被拖曳之整列,rows為依opt.keys提取之新列序數據副本(同getNowData,就地修改不影響表格與opt.rows)
opt.genRowsPinnTop function null No 輸入產生置頂rows函數,輸入為表內全部數據,預設為null
opt.genRowsPinnBottom function null No 輸入產生置底rows函數,輸入為表內全部數據,預設為null
opt.kpColStyle Object {} No 輸入key對應col style之物件,可設定各key欄之col style,預設各key值為undefined
opt.kpColSpan Object {} No 輸入key對應col span之物件,可設定各key欄之col span,預設各key值為undefined
opt.defCellAlignH String 'center' No 輸入cell預設之左右對齊字串,預設為'center'
opt.kpCellAlignH Object {} No 輸入key對應cell之左右對齊字串物件,預設各key值為defCellAlignH
opt.defCellEditable Boolean false No 輸入cell預設之是否可編輯布林值,預設為false
opt.kpCellEditable Object {} No 輸入key對應cell之是否可編輯物件,各key值可為布林值或函數,預設各key值為defCellEditable;值原樣指給ag-grid之colDef.editable,故語意同ag-grid:布林值代表整欄是否可編輯,函數簽名為(params)=>boolean,params同ag-grid之EditableCallbackParams(含node、data、column、colDef、api、context),對每個儲存格逐列求值,回傳true代表該儲存格可編輯(可據以做到逐列唯讀),其他型態(非布林值非函數)視為不可編輯;ag-grid之雙擊、F2、鍵入編輯與元件之貼上(Ctrl+V、pasteText)皆依同一判斷,貼上時唯讀之儲存格略過不寫入(其餘儲存格照寫,欄位索引照常遞增),各儲存格之判斷皆於元件寫入前完成(同一次貼上先寫入之儲存格不影響後面儲存格之判斷),函數須無副作用;貼上時函數若拋錯,該儲存格視為不可編輯並略過(不使整批貼上失敗),同一次貼上同一欄於console以`[w-aggrid-vue] pasteText: kpCellEditable[key] threw, ...`說明一次;以鍵盤Ctrl+V自編輯器開啟中之儲存格貼上時,編輯器會先提交瀏覽器原生貼入之文字,函數看到的是提交後之資料
opt.kpCellFormat Object {} No 輸入key對應cell之值格式化函數物件,函數簽名為(value, key, row, params),回傳顯示字串,回傳值不經套件轉換直接使用,回傳null或undefined代表不格式化維持原值;所有原值(含null、undefined、空字串)皆原樣傳入,空值之呈現由呼叫端於函數內自行決定;作用於顯示與下載(下載時row同為該列完整數據、params為null),排序與過濾仍依原值;與cell-render slot可並用,slot props之value為原值、valueFormatted為格式化值,預設各key值為undefined
opt.kpConvertKeysWhenUploadData Object {} No 輸入上傳Excel檔案時將檔案表頭名稱轉為欄位key之對照物件,例如{ '製造商': 'make' },於uploadData之beforeUpload之前套用,轉換後與檔案既有表頭同名時依欄序後者覆蓋,預設{}
opt.rowsChange function ()=>{} No 輸入rows change之觸發事件,預設為()=>{}
opt.rowClick function ()=>{} No 輸入row click之觸發事件,預設為()=>{}
opt.rowDbClick function ()=>{} No 輸入row double click之觸發事件,預設為()=>{}
opt.rowChange function ()=>{} No 輸入row change之觸發事件,預設為()=>{}
opt.rowChecked function ()=>{} No 輸入row checked之觸發事件,需使用kpHeadCheckBox開啟指定key的head與對應rows使用checkbox,預設為()=>{}
opt.rowMouseEnter function ()=>{} No 輸入row mouseenter之觸發事件,預設為()=>{}
opt.rowMouseLeave function ()=>{} No 輸入row mouseleave之觸發事件,預設為()=>{}
opt.cellClick function ()=>{} No 輸入cell click之觸發事件,預設為()=>{}
opt.cellDbClick function ()=>{} No 輸入cell double click之觸發事件,預設為()=>{}
opt.cellChange function ()=>{} No 輸入cell change之觸發事件,預設為()=>{}
opt.cellMouseEnter function ()=>{} No 輸入cell mouseenter之觸發事件,預設為()=>{}
opt.cellMouseLeave function ()=>{} No 輸入cell mouseleave之觸發事件,預設為()=>{}
opt.filterChange function ()=>{} No 輸入filter change之觸發事件,於掛載與filterall變更時(from為'filterall')、表頭過濾變更時(含setHeadFilter、clearHeadFilter、clearHeadFilterAll,from為'heads')各觸發1次,傳入{ from, filterall, flts, isFilter },flts為觸發後讀取當下之生效中過濾模型陣列(依opt.keys之順序,含隱藏欄),元件或ag-grid已銷毀後不觸發,預設為()=>{}
opt.autoFitColumn Boolean false No 輸入當表格尺寸變更時自動調整欄寬布林值,預設false
opt.language String 'en' No 輸入指定語系字串,可選'en'、'zh-tw'、'zh-cn',預設為'en'
height Number 300 No 表格高度,單位為px,預設300
filterall String '' No 輸入對全表數據進行過濾之字串,預設為''

Methods

downloadData(optopt) → {Array}

Description:
  • 下載表格全部數據為Excel檔案,欄位依opt.keys之順序且含隱藏欄,數據為opt.rows全部列(不受表頭過濾、filterall與排序影響),不含置頂置底列;不需表格就緒即可呼叫,惟opt變更後須待$nextTick再呼叫,否則取得變更前之數據

    處理順序:欄位keys → opt.funGetKeysHook → 依keys由各列取值並依opt.kpCellFormat格式化 → opt.funGetLtdtHook → 轉為二維陣列並加上表頭列 → opt.funGetMatHook → 觸發下載;各掛鉤皆須同步回傳,不支援Promise

Source:
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件,未給予或非物件時為{},各鍵未給予或非指定之值或型態時皆使用預設(掛鉤非函數時視為未給予),有給予但無效時於console提示,預設{}

Properties
Name Type Attributes Default Description
funGetKeysHook function <optional>
null

輸入欄位處理函數,輸入為欄位keys陣列之副本,可增刪或調整順序後回傳(可加入隱藏欄,數據列無該key時其值為空字串),須回傳由非空字串組成之陣列,回傳空陣列代表無可下載欄位而拋錯,預設null

funGetLtdtHook function <optional>
null

輸入數據處理函數,輸入為依keys提取之各列物件陣列(值已依useFormat格式化且為副本,無數據列時為空陣列),須回傳物件陣列且各列皆為非空物件,回傳空陣列時僅輸出表頭列,本函數新增或修改之值不再格式化,預設null

funGetMatHook function <optional>
null

輸入二維陣列處理函數,輸入之首列為表頭,須回傳二維陣列且至少一列非空,回傳之儲存格值原樣交給寫檔器(字串、數值、布林、Date、null可寫出,物件、陣列、NaN等多為空白格,帶value、formula、style等鍵之物件被寫檔器當成儲存格設定而格式不符時寫檔失敗並僅記錄於console),預設null

useHead Boolean <optional>
false

輸入表頭是否使用opt.kpHead之名稱布林值,false時使用key,opt.kpHead無對應之key仍使用key;下載檔欲上傳回表格時須另設opt.kpConvertKeysWhenUploadData為反向對照,且名稱須非空且不重複,預設false

useFormat Boolean <optional>
true

輸入是否依opt.kpCellFormat格式化各欄值布林值,true時與畫面一致(格式化函數之row為該列完整數據、params為null),false時下載原值;下載檔欲上傳回表格時宜給false,預設true

fileName String <optional>
'data.xlsx'

輸入檔名字串,非字串或空字串時為'data.xlsx',無副檔名時自動補'.xlsx',預設'data.xlsx'

sheetName String <optional>
'data'

輸入分頁名稱字串,須為字串且符合Excel規則(至多31字且以UTF-16碼元計,表情符號與擴充B區漢字各計2字;不含[ ] : * ? / \、首尾非單引號、非History),不符或非字串時為'data',預設'data'

Throws:

下列情形同步拋錯且不產生檔案,訊息前綴為'[w-aggrid-vue] downloadData: ':掛鉤回傳Promise('<掛鉤名> must return synchronously, Promise is not supported')、opt.funGetKeysHook未回傳陣列或含非字串之key、無可下載欄位('no downloadable keys')、opt.funGetLtdtHook未回傳陣列或含非物件之列、opt.funGetMatHook未回傳二維陣列或全為空列、最終二維陣列超過Excel單一分頁之上限('too many rows, ...'為含表頭列超過1048576列,'too many columns, ..., invalid row[i]'為任一列超過16384欄);掛鉤與opt.kpCellFormat之函數自身拋錯時原樣拋出;觸發下載後之寫檔失敗僅以'[w-aggrid-vue] downloadData: can not write excel file'記錄於console,無法回報

Type
Error
Returns:

回傳下載內容之二維陣列(opt.funGetMatHook處理後),未經opt.funGetMatHook改寫之儲存格中null為空字串、布林值為'true'或'false'、物件與陣列為JSON字串

Type
Array

downloadDisplayData(optopt) → {Array}

Description:
  • 下載表格顯示中之數據為Excel檔案,欄位為顯示中之欄位且依畫面欄序(含拖曳後之順序,固定於左右之欄依其畫面位置),數據為經表頭過濾、filterall與排序後之列,不含置頂置底列;須表格存在,元件或ag-grid銷毀後呼叫會拋錯

    選項、處理順序、回傳值與拋錯皆同downloadData,訊息前綴改為'[w-aggrid-vue] downloadDisplayData: ',另於表格不存在(元件或ag-grid已銷毀)時拋'grid is not available';opt.funGetKeysHook加入隱藏欄時亦輸出其值

Source:
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件,各選項同downloadData,預設{}

Throws:

同downloadData,另於表格不存在時拋錯

Type
Error
Returns:

回傳下載內容之二維陣列,同downloadData

Type
Array

uploadData(optopt) → {Promise}

Description:
  • 開啟上傳視窗讀取Excel檔案,並以其數據取代或附加於表格數據

    須於使用者操作(例如點擊)之事件處理函數內呼叫,否則瀏覽器不開啟選檔視窗,回傳之Promise亦不會結束。讀檔規則:讀取.xlsx之指定分頁,首列為表頭,表頭須與opt.keys完全相同(含大小寫與空白)或經表格之opt.kpConvertKeysWhenUploadData轉換,空表頭之欄略過,表頭重複或轉換後同名時後者覆蓋;整列皆無值之列略過,含空字串儲存格之列或只有無表頭欄有值之列讀為空白列;值一律讀為字串,日期儲存格讀為'YYYY-MM-DDTHH:mm:ss.SSS'(即Excel儲存格之年月日時分秒,不含時區,與執行環境時區無關),日期型之表頭亦同。寫入時只保留opt.keys之欄,缺欄之值為空字串;個別空白列照常寫入,全部列皆空白時拒絕;附加模式會重建既有之列物件。多次呼叫時依完成先後寫入,後完成者覆蓋。上傳屬程式化之整表資料取代或附加,不受opt.kpCellEditable約束(kpCellEditable只約束使用者之互動編輯,如雙擊、F2、鍵入與貼上),不可編輯之欄與列同樣會被寫入

Source:
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件,未給予或非物件時為{},各鍵未給予或非指定之值或型態時皆使用預設,有給予但無效時於console提示,預設{}

Properties
Name Type Attributes Default Description
beforeUpload function <optional>
null

輸入寫入表格前之數據處理函數,輸入為讀取Excel所得(已依表格之opt.kpConvertKeysWhenUploadData轉換鍵值)之各列物件陣列,無數據列時為空陣列;須回傳處理後之數據陣列,或resolve為該陣列之Promise(含thenable),各列須為物件(可為空物件);欲中止上傳時拋錯或回傳rejected Promise,其錯誤原樣reject且保持參照;非函數時視為未給予,預設null

parseSheetInd Number | String <optional>
0

輸入讀取Excel檔案之第幾個分頁之非負整數,可為整數字串,依活頁簿分頁順序且含隱藏分頁,未給予或無效時為0,預設0

uploadMode String <optional>
'replace'

輸入上傳模式字串,可選'replace'(取代表格數據)、'append'(附加於表格數據之後),未給予或無效時為'replace',預設'replace'

Returns:

回傳Promise,resolve回傳上傳後之表格數據陣列,與opt.rows為同一陣列,resolve時表格已更新,opt.rowsChange於其後觸發;reject時本方法不寫入表格數據(beforeUpload自身對外之改動不回復),亦不觸發opt.rowsChange。reject之值:本方法產生者為錯誤物件{ msg, err },msg為下列代碼,err為說明(除'no file'、'can not read excel'與'can not read file'外皆以'[w-aggrid-vue] uploadData: '為前綴):使用者於選檔視窗取消時msg為'no file'、err為'file selection was canceled',此時未呼叫beforeUpload,呼叫端可依msg判斷為取消而不提示;選檔或讀取檔案失敗(例如檔案過大)時msg為'can not read file'、err為wsemi之錯誤物件;無法讀取Excel時msg為'can not read excel';指定之分頁不存在時msg為'can not get data from sheet';beforeUpload回傳值不合約定時msg為'invalid beforeUpload return';無可寫入之列或全部列於opt.keys之值皆為空時msg為'no data',呼叫端可視為無作為;無任一列有opt.keys之值時(例如首列非表頭、表頭與opt.keys不符、讀到隱藏分頁)msg為'no matching keys'。beforeUpload自身拋錯或reject時,其錯誤原樣reject且保持參照

Type
Promise