成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

演示在小程序中實現(xiàn)excel數(shù)據(jù)的批量導入的具體代碼

3403771864 / 582人閱讀

  其實我們本篇文章主要講述的就是需要將采集的數(shù)據(jù)積累下來,變成企業(yè)的數(shù)字資產(chǎn)。

  積累數(shù)據(jù)最好的方式就是把數(shù)據(jù)存入數(shù)據(jù)庫,低碼工具除了有可視化編程的便利外,不僅如此還有提供了線上的文檔型數(shù)據(jù)庫。文檔數(shù)據(jù)庫相比傳統(tǒng)數(shù)據(jù)庫,文檔數(shù)據(jù)庫的返回結(jié)構(gòu)是JSON格式,直接就可以在前端進行渲染。關(guān)系型數(shù)據(jù)庫還得通過代碼進行轉(zhuǎn)譯。

  我們現(xiàn)在還講另外一個方面是文檔數(shù)據(jù)庫的類型更豐富,有附件、富文本、自動編號、數(shù)組、對象、圖片、地理位置這些偏業(yè)務(wù)類型的字段。有了這些豐富多彩的字段,那我們就可以減少代碼的編制,無疑對提高編程效率非常有幫助。

  話不多說,直奔主題就是將騰訊文檔的數(shù)據(jù)批量入庫。

  1 建立數(shù)據(jù)源

  要想將數(shù)據(jù)入庫,就先需要建立數(shù)據(jù)源。登錄微搭控制臺,點擊數(shù)據(jù)源,點擊新建數(shù)據(jù)模型

1.jpg

  輸入名稱和標識

2.jpg

  數(shù)據(jù)源建立之后需要創(chuàng)建字段,點擊添加字段

3.jpg

  初學者最大的疑問是我需要建哪些字段,字段是個什么概念?我們還是先看一下我們的騰訊文檔的在線表格

4.jpg

  對于excel不太了解的話,我們就要學習,比如excel里有行和列的概念,這樣我們的字段其實是列,每一列都對應(yīng)一個字段。字段的類型其實是和單元格的內(nèi)容是相關(guān)的。比如我的A2單元格是張三,明顯是存的字符,那么我們的類型就是文本。C2是出生日期,應(yīng)該是日期類型。D2是聯(lián)系電話,可以選擇文本也可以選擇電話類型。

  明白了這個基礎(chǔ)概念之后,我們分別添加一下字段,一共是四個字段,姓名、性別、出生日期、聯(lián)系電話

5.jpg

6.jpg

7.jpg

8.jpg


  2 編制入庫的代碼

  我們上一節(jié)介紹了如何創(chuàng)建連接器來對接騰訊文檔,不會的同學可以翻看上一篇文章添加騰訊文檔連接器

  讀取騰訊文檔的數(shù)據(jù)分為讀取sheet,根據(jù)sheet獲取每一行的數(shù)據(jù)。因為是入庫,還需要將解析好的數(shù)據(jù)封裝到對象中,調(diào)用批量新增的方法入庫。我們來一步步講解一下。

  2.1 創(chuàng)建低碼方法

  要想入庫,先需要創(chuàng)建一個低碼方法。點擊左上角的低碼編輯器進入到代碼界面

9.jpg

  低碼編輯器打開之后會定位到當前頁面,在handler旁邊點擊+號來創(chuàng)建低碼方法

10.jpg

  首先需要輸入一個方法名,方法名最好能望文知義,我們可以定義一個batchAdd方法

11.jpg

  平臺會自動生成代碼結(jié)構(gòu)

12.jpg

  初學者因為沒有系統(tǒng)的學習過編程,往往容易犯的錯誤是自由發(fā)揮,隨意編制代碼。我們講解一下這里的知識點。一般我們在handler里定義的方法叫函數(shù),函數(shù)由幾部分組成,函數(shù)名、入?yún)ⅰ⒊鰠ⅲɑ蛘呓蟹祷刂担?/p>

  export default function是函數(shù)的定義,這里叫匿名函數(shù),就是不給函數(shù)起一個名字。如果函數(shù)體里寫了await了,這個函數(shù)需要改寫成異步函數(shù),變成export default async function

  小括號里邊的叫入?yún)ⅲ鄠€參數(shù)以逗號分隔。我們這里其實只有一個入?yún)ⅲ莧event,data}。用一對兒大括號包裹的叫對象,對象里是具體的入?yún)ⅰ?/p>

  event是事件對象,一般我們可以獲取到組件里的值,data是如果調(diào)用事件傳參了,可以直接從data里獲取值。具體如果希望看到值的我們可以使用打樁的技術(shù),所謂的打樁就是在控制臺輸出具體的值。

  比如我們可以這樣寫

  export default function({event, data}) {
  console.log(event,data)
  }

  打好樁之后,如何看結(jié)果呢?事件必須綁定到組件上,組件產(chǎn)生的各種的動作可以觸發(fā)事件。就像我們這個批量入庫,需要用戶主動觸發(fā),就需要放置一個按鈕,并且綁定點擊事件,來觸發(fā)批量新增的方法。

13.jpg

1.jpg


  事件綁定好之后在哪看結(jié)果呢?點擊開發(fā)調(diào)試工具來看具體的輸出

15.jpg


  這時候點擊一下按鈕就可以看到對應(yīng)的輸出

16.jpg


  輸出的結(jié)果還是蠻復(fù)雜的,不同的組件產(chǎn)生的事件對象不同,里邊的內(nèi)容不同,我們會在具體的場景進行深入的講解。為啥本篇會先講一些基礎(chǔ)操作呢?因為不少粉絲是按照教程的步驟一步步操作的,不懂基本的操作有時候會亂粘貼一氣,然后就是各種各樣的報錯,還不知道從哪看錯誤,浪費了不少時間。

  2.2 低碼中調(diào)用連接器

  我們上一篇是使用變量的方法調(diào)用了連接器,這一篇我們使用低碼方法調(diào)用連接器。為了獲取騰訊文檔中的數(shù)據(jù),先需要獲取工作表的信息。我們復(fù)習一下變量中我們是如何調(diào)用的

17.jpg

  這里是調(diào)用了getSheets方法,并且傳入了bookID,低碼中是通過api的方式來調(diào)用的,在方法中輸入如下代碼

  const bookID = "DWkxMSFlkU1l2YkRo";
  const { sheetData } = await app.cloud.callConnector({
  name: 'txwd_jnegl1q',
  methodName: 'getSheets',
  params: {
  bookID,
  },
  });
  console.log(sheetData)

  這里的bookID是通過騰訊文檔分享鏈接的時候獲取到的,{sheetData}是解構(gòu)賦值的意思,可以直接從返回結(jié)果里獲取對應(yīng)的值??梢钥匆幌驴刂婆_打印的結(jié)果


  要怎么看返回結(jié)果呢,一對兒中括號表示數(shù)組的意思,展開數(shù)組第一個元素的下標是0,數(shù)組里的元素是個對象,對象是以一對兒大括號表示的,對象里邊又有具體的屬性和方法。我們這里邊需要的是sheetID,cloumnCount,rowCount。

  了解了之后我們就定義變量來接收返回值,輸入如下代碼

  let sheetID = sheetData[0].sheetID
  let rowCount = sheetData[0].rowCount
  let columnCount = sheetData[0].columnCount
  console.log(sheetID, rowCount, columnCount)

  看控制臺的打印結(jié)果

19.jpg

  接著我們就需要根據(jù)返回的結(jié)果調(diào)用獲取單元格的方法,我們使用變量的時候是這么做的

20.jpg

  代碼中是這樣獲取

  const { rows } = await app.cloud.callConnector({
  name: 'txwd_jnegl1q',
  methodName: 'getRows',
  params: {
  bookID,
  sheetID,
  rows: `2-${rowCount}`
  },
  });
  console.log(rows)

  這里小伙伴不明白的就是這一句2-${rowCount},用兩個反引號包裹的表示模板字符串,里邊如果使用${}這種語法的表示變量,代碼只要一執(zhí)行就會翻譯成2-3,讀取第二行、第三行的數(shù)據(jù)。我們看一下輸出的結(jié)果

21.jpg

  textTypes表示每一列的字段類型,textValues表示具體的值。字段類型我們不需要,只需要解析出具體的值就可以

  這樣每行的數(shù)據(jù)也解析出來了,就需要按照需要的格式整理入庫了,下邊是入庫的代碼

  const newRecords = [];
  const columns = "xm|xb|csrq|lxdh";
  for(let r = 0; r < rowCount - 1; r++) {
  const { textValues } = rows[r];
  const inputParams = {};
  const cols = columns.split('|');
  cols.forEach((c, i) => {
  inputParams[c] = textValues[i];
  });
  newRecords.push(inputParams);
  }
  await app.cloud.callModel({
  name: 'txwdsjy_q6rop6n', // 數(shù)據(jù)模型標識
  methodName: 'wedaBatchCreate', // 新增多條的方法標識
  params: {
  records: newRecords,
  },
  });

  這里columns是內(nèi)數(shù)據(jù)源的每一個字段的字段標識,可以去數(shù)據(jù)源那塊找到

22.jpg

  其余的代碼因為涉及到具體的編程知識,你直接復(fù)用就可以,感興趣的同學可以學習一下javascript,了解了語法之后就可以讀的懂

  寫好之后點擊按鈕,發(fā)現(xiàn)有兩條數(shù)據(jù)已經(jīng)寫入數(shù)據(jù)庫了

23.jpg

  但是有個問題是出生日期沒有正確的讀出來,入庫的日期都是1970-01-01。如果有解決辦法的小伙伴可以評論區(qū)留言,也方便大家學習。

  3 最終的代碼

  export default async function ({ event, data }) {
  console.log(event, data)
  const bookID = "DWkxMSFlkU1l2YkRo";
  const { sheetData } = await app.cloud.callConnector({
  name: 'txwd_jnegl1q',
  methodName: 'getSheets',
  params: {
  bookID,
  },
  });
  console.log(sheetData)
  let sheetID = sheetData[0].sheetID
  let rowCount = sheetData[0].rowCount
  let columnCount = sheetData[0].columnCount
  console.log(sheetID, rowCount, columnCount)
  const { rows } = await app.cloud.callConnector({
  name: 'txwd_jnegl1q',
  methodName: 'getRows',
  params: {
  bookID,
  sheetID,
  rows: `2-${rowCount}`
  },
  });
  console.log(rows)
  const newRecords = [];
  const columns = "xm|xb|csrq|lxdh";
  for(let r = 0; r < rowCount - 1; r++) {
  const { textValues } = rows[r];
  const inputParams = {};
  const cols = columns.split('|');
  cols.forEach((c, i) => {
  inputParams[c] = textValues[i];
  });
  newRecords.push(inputParams);
  }
  await app.cloud.callModel({
  name: 'txwdsjy_q6rop6n',
  methodName: 'wedaBatchCreate',
  params: {
  records: newRecords,
  },
  });
  }

  本篇內(nèi)容已經(jīng)結(jié)束,學習更多是用在實踐,因此大家動手才是真理。



文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128210.html

相關(guān)文章

  • Spread Studio 跨平臺表格控件v11.1正式發(fā)布,讓數(shù)據(jù)Excel 方式說話

    摘要:為函數(shù)提供語法支持為和行為一致,計算函數(shù)現(xiàn)在使用語法對值進行格式設(shè)置替代了過去使用語法。在這種情況下,客戶端接口和將不起作用。也于近日發(fā)布了新版本,敬請點擊此處了解更多。 超強數(shù)據(jù)處理,無縫兼容Excel!Spread Studio是一款高度兼容 Excel 的跨平臺表格控件,用于在您的應(yīng)用系統(tǒng)中實現(xiàn)表格數(shù)據(jù)錄入和編輯等交互功能,并且提供靈活的定制能力和豐富的數(shù)據(jù)可視化效果,為商業(yè)表單...

    Awbeci 評論0 收藏0
  • Spread Studio 跨平臺表格控件v11.1正式發(fā)布,讓數(shù)據(jù)Excel 方式說話

    摘要:為函數(shù)提供語法支持為和行為一致,計算函數(shù)現(xiàn)在使用語法對值進行格式設(shè)置替代了過去使用語法。在這種情況下,客戶端接口和將不起作用。也于近日發(fā)布了新版本,敬請點擊此處了解更多。 超強數(shù)據(jù)處理,無縫兼容Excel!Spread Studio是一款高度兼容 Excel 的跨平臺表格控件,用于在您的應(yīng)用系統(tǒng)中實現(xiàn)表格數(shù)據(jù)錄入和編輯等交互功能,并且提供靈活的定制能力和豐富的數(shù)據(jù)可視化效果,為商業(yè)表單...

    jifei 評論0 收藏0
  • SpreadJS 純前端表格控件V11.1震撼來襲

    摘要:如下是具體代碼示例新增單元格范圍對角線,使您的表格數(shù)據(jù)更加醒目新增對單元格或范圍設(shè)置對角線邊框樣式的功能,并支持保存到文件或打印輸出。 純前端表格控件SpreadJS 正式發(fā)布2018 V11.1 版本,新版本提供撤銷/重做功能,并增強了UI和數(shù)據(jù)篩選,極大的擴展了產(chǎn)品的實用功能,可更加方便優(yōu)雅的嵌入您的應(yīng)用系統(tǒng)。 Spread 是一系列功能和Excel類似的表格工具,支持桌面、Web...

    Hydrogen 評論0 收藏0
  • SpreadJS 純前端表格控件V11.1震撼來襲

    摘要:如下是具體代碼示例新增單元格范圍對角線,使您的表格數(shù)據(jù)更加醒目新增對單元格或范圍設(shè)置對角線邊框樣式的功能,并支持保存到文件或打印輸出。 純前端表格控件SpreadJS 正式發(fā)布2018 V11.1 版本,新版本提供撤銷/重做功能,并增強了UI和數(shù)據(jù)篩選,極大的擴展了產(chǎn)品的實用功能,可更加方便優(yōu)雅的嵌入您的應(yīng)用系統(tǒng)。 Spread 是一系列功能和Excel類似的表格工具,支持桌面、Web...

    developerworks 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<