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

資訊專欄INFORMATION COLUMN

Django提交wps表格格并將它們載入數(shù)據(jù)庫系統(tǒng)詳盡流程

89542767 / 553人閱讀

  此篇文章關(guān)鍵闡述了Django提交wps表格格并將它們載入數(shù)據(jù)庫系統(tǒng),將文件傳送到網(wǎng)絡(luò)服務(wù)器特定途徑,其實不是很難,文中分三個環(huán)節(jié)來給大家詳解,需要的小伙伴可以參考一下


  導(dǎo)言:


  近期上級領(lǐng)導(dǎo)要統(tǒng)計技術(shù)單位在多個業(yè)務(wù)線投入的工時百分?jǐn)?shù),而jira現(xiàn)階段的Tempo軟件只有統(tǒng)計分析本人工時。于是便寫了個報表軟件,將jira中導(dǎo)出來本人的工時wps表格格導(dǎo)入數(shù)據(jù)庫,在后面解決每個業(yè)務(wù)流程工時占有率。之后科學(xué)研究了jiri的API文本文檔,選擇放棄之前思路,立即調(diào)用jiraAPI建立模型,這些先不說。這篇文章博客關(guān)鍵詳細(xì)介紹Django上傳圖片,隨后分析excel導(dǎo)入數(shù)據(jù)庫。


  一、上傳文件:


  將文件上傳到服務(wù)器指定路徑,其實很簡單,一共有三個步驟:


  1.配置setting.py


  #文件上傳配置


  UPLOAD_ROOT=os.path.join(BASE_DIR,'upload')


  2.前端代碼如下,使用<form>表單提交,"/upload/"路由配置在urls中,這個就不再多說了。


  {%extends'base.html'%}
  {%block content%}
  <body>
  <form id="form"enctype="multipart/form-data"action="/upload/"method="post">
  <p><input type="file"name="file"></p>
  <input type="submit"name="提交">
  </form>
  </body>
  {%endblock%}
  3.后端代碼如下,這段代碼可以上傳任意格式的文件,沒有校驗文件類型。
  csrf_exempt
  def upload(request):
  #根name取file的值
  file=request.FILES.get('file')
  logger.log().info('uplaod:%s'%file)
  #創(chuàng)建upload文件夾
  if not os.path.exists(settings.UPLOAD_ROOT):
  os.makedirs(settings.UPLOAD_ROOT)
  try:
  if file is None:
  return HttpResponse('請選擇要上傳的文件')
  #循環(huán)二進制寫入
  with open(settings.UPLOAD_ROOT+"/"+file.name,'wb')as f:
  for i in file.readlines():
  f.write(i)
  except Exception as e:
  return HttpResponse(e)
  return HttpResponse('上傳成功')


  二、解析excel導(dǎo)入數(shù)據(jù)庫


  1.文件上傳結(jié)束后,接下來讀取剛上傳到服務(wù)器的excel表格,然后寫入數(shù)據(jù)庫。所以整個后端代碼是這樣的:


  #將excel數(shù)據(jù)寫入mysql
  def wrdb(filename):
  #打開上傳excel表格
  readboot=xlrd.open_workbook(settings.UPLOAD_ROOT+"/"+filename)
  sheet=readboot.sheet_by_index(0)
  #獲取excel的行和列
  nrows=sheet.nrows
  ncols=sheet.ncols
  print(ncols,nrows)
  sql="insert into working_hours(jobnum,name,workingtime,category,project,date,createtime)VALUES"
  for i in range(1,nrows):
  row=sheet.row_values(i)
  jobnum=row[4]
  name=row[5]
  workingtime=row[2]
  category=row[8]
  project=row[1]
  date=xldate_as_datetime(row[3],0).strftime('%Y/%m/%d')
  values="('%s','%s','%s','%s','%s','%s','%s')"%(jobnum,name,workingtime,category,project,date,datetime.datetime.now())
  sql=sql+values+","
  #為了提高運行效率,一次性把數(shù)據(jù)insert進數(shù)據(jù)庫
  sql=sql[:-1]
  #寫入數(shù)據(jù)庫
  #DataConnection是自定義的公共模塊,用的是第三方庫,用來操作數(shù)據(jù)庫。沒有用ORM,后續(xù)有g(shù)roup by等復(fù)雜sql不好操作。
  DataConnection.MysqlConnection().insert('work',sql)
  csrf_exempt
  def upload(request):
  #根name取file的值
  file=request.FILES.get('file')
  print('uplaod:%s'%file)
  #創(chuàng)建upload文件夾
  if not os.path.exists(settings.UPLOAD_ROOT):
  os.makedirs(settings.UPLOAD_ROOT)
  try:
  if file is None:
  return HttpResponse('請選擇要上傳的文件')
  #循環(huán)二進制寫入
  with open(settings.UPLOAD_ROOT+"/"+file.name,'wb')as f:
  for i in file.readlines():
  f.write(i)
  #寫入mysql
  wrdb(file.name)
  except Exception as e:
  return HttpResponse(e)
  return HttpResponse('導(dǎo)入成功')


  2.數(shù)據(jù)導(dǎo)入后,通過一些處理就得到了我們想要的數(shù)據(jù)。報表其中之一的餅圖:

01.png

  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>

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

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

相關(guān)文章

  • 現(xiàn)代軟件開發(fā)流程-by 12-Factor

    摘要:將開發(fā)環(huán)境和生產(chǎn)環(huán)境的差異降至最低,并使用持續(xù)交付實施敏捷開發(fā)??梢栽诠ぞ呒軜?gòu)和開發(fā)流程不發(fā)生明顯變化的前提下實現(xiàn)擴展。我們的初衷是分享在現(xiàn)代軟件開發(fā)過程中發(fā)現(xiàn)的一些系統(tǒng)性問題,并加深對這些問題的認(rèn)識。 簡介 如今,軟件通常會作為一種服務(wù)來交付,它們被稱為網(wǎng)絡(luò)應(yīng)用程序,或軟件即服務(wù)(SaaS)。12-Factor 為構(gòu)建如下的 SaaS 應(yīng)用提供了方法論: 使用標(biāo)準(zhǔn)化流程自動配置,從...

    draveness 評論0 收藏0
  • EXCEL必備工具箱(EXCELtool)官方免費版V17.0 | 超級excel插件工具箱下載 |

    摘要:必備工具箱威航軟件園溫馨提示由于先天不支持插件撤銷事項,所以必備工具箱的任何操作都不可以撤銷,但是在中就可以任意撤銷,此外大家還可以通過這款強大的插件工具箱對煩人的熱點彈窗功能予以徹底屏蔽哦。 ? ? ? ? ? ??EXCEL必備工具箱是一款大部分功能免費且齊全可還能同時支持微軟EXCEL...

    Sike 評論0 收藏0
  • 【js】——前端無插件導(dǎo)出excel:自定義sheet、插入圖片、設(shè)置打印、頁邊距、頁腳等

    摘要:思路用現(xiàn)有的導(dǎo)出的插件,無法實現(xiàn),所以只能手寫各種樣式代碼關(guān)于打印頁腳之類無從下手的要求,需要導(dǎo)出后,復(fù)制一份,原文件拖進,查看源碼,復(fù)制的那份用打開,設(shè)置打印頁腳。 背景 前段時間因一個需求后端無法完成,所以交給前端來實現(xiàn),導(dǎo)出表格,需要實現(xiàn):1、支持多個sheet,并且有自己的name2、根據(jù)要求合并單元格,設(shè)置單元格的寬高3、在表格內(nèi)有各自的二維碼4、打印的頁邊距為左右各0.5c...

    flybywind 評論0 收藏0
  • html常用標(biāo)簽整理

    摘要:主要通過樣式為其賦予不同的表現(xiàn)標(biāo)簽用來定義內(nèi)聯(lián)行內(nèi)元素,并無實際的意義。html文檔結(jié)構(gòu) 1 DOCTYPE html> 2 <html lang="zh-CN"> #這個lang表示語言,zh-CN中文的意思,整個文檔的內(nèi)容以中文為主,如果以英文為主,就寫成lang=en 3 4 <head> 5 <meta charset...

    番茄西紅柿 評論0 收藏0
  • 瀏覽器將標(biāo)簽轉(zhuǎn)成 DOM 的過程

    摘要:在這些罕見的情況下,解析器必須重新啟動,丟棄之前解碼的內(nèi)容。標(biāo)簽包含解析器必須收集的文本,然后發(fā)送到腳本引擎進行評估。如果文件內(nèi)調(diào)用了,解析器將重新開始解析過程。事件當(dāng)解析器完成時,它通過一個名為的事件宣布完成。 瀏覽器基本的工作流程 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 進入主話題之前,先羅列一下瀏覽器的主要構(gòu)成: 用戶界面- 包括地址欄、后退/前進...

    LancerComet 評論0 收藏0

發(fā)表評論

0條評論

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