国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

89542767 / 538人閱讀

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


  導(dǎo)言:


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


  一、上傳文件:


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


  1.配置setting.py


  #文件上傳配置


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


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


  {%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.后端代碼如下,這段代碼可以上傳任意格式的文件,沒(méi)有校驗(yàn)文件類型。
  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('請(qǐng)選擇要上傳的文件')
  #循環(huán)二進(jì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ù)庫(kù)


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


  #將excel數(shù)據(jù)寫入mysql
  def wrdb(filename):
  #打開(kāi)上傳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+","
  #為了提高運(yùn)行效率,一次性把數(shù)據(jù)insert進(jìn)數(shù)據(jù)庫(kù)
  sql=sql[:-1]
  #寫入數(shù)據(jù)庫(kù)
  #DataConnection是自定義的公共模塊,用的是第三方庫(kù),用來(lái)操作數(shù)據(jù)庫(kù)。沒(méi)有用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('請(qǐng)選擇要上傳的文件')
  #循環(huán)二進(jì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)入后,通過(guò)一些處理就得到了我們想要的數(shù)據(jù)。報(bào)表其中之一的餅圖:

01.png

  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128702.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    LancerComet 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<