fileoper.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import os, json
  2. from flask import make_response, send_from_directory
  3. from openpyxl import Workbook
  4. from docx import Document
  5. from docx.shared import Inches
  6. class FileOper():
  7. def download(self, filename): #下载的方法
  8. directory = os.getcwd() #获取当前程序的工作路径
  9. response = make_response(send_from_directory( directory+'/upload/xlsx/',
  10. filename, as_attachment=True))
  11. #设置头,表示这是一个附件
  12. response.headers["Content-Disposition"] = "attachment; filename={}".format(filename)
  13. return response
  14. def downloadword(self, filename): #下载的方法
  15. directory = os.getcwd() #获取当前程序的工作路径
  16. response = make_response(send_from_directory( directory+'/upload/docx/',
  17. filename, as_attachment=True))
  18. #设置头,表示这是一个附件
  19. response.headers["Content-Disposition"] = "attachment; filename={}".format(filename)
  20. return response
  21. #导出Excel文档的方法
  22. def exportExcel(self, exportData):
  23. try:
  24. #要生成的数据
  25. exportObj = json.loads(exportData)
  26. #创建一个工作簿
  27. wb = Workbook()
  28. #创建工作表
  29. wb.create_sheet(title="全国", index =0 )
  30. #设置为当前的工作区
  31. ws = wb.active
  32. #设置单元格
  33. ws['A1']= '序号'
  34. ws['B1'] = '疫情地区'
  35. ws['C1'] = '新增'
  36. ws['D1'] = '现有'
  37. ws['E1'] = '累计'
  38. ws['F1'] = '治愈'
  39. ws['G1'] = '死亡'
  40. for index, item in enumerate(exportObj['list']):
  41. ws.append([index+1, item['area'],item['confirmedRelative'],
  42. item['curConfirm'],item['confirmed'], item['crued'], item['died']])
  43. #保存
  44. wb.save("upload/xlsx/global_1902_kxy.xlsx")
  45. return 'success'
  46. except Exception as e:
  47. print(e)
  48. #pass
  49. return 'failure'
  50. #生成Word方法
  51. def exportWord(self, exportData):
  52. try:
  53. #要生成的数据
  54. exportObj = json.loads(exportData)
  55. #首先创建一个Word文档对象
  56. document = Document()
  57. #添加标题
  58. document.add_heading('新型冠状病毒肺炎疫情',0)
  59. # 添加段落
  60. p = document.add_paragraph('全国 实时更新_1902_kxy')
  61. p.add_run('粗体').bold = True
  62. p.add_run(' 普通文本 ')
  63. p.add_run('斜体.').italic = True
  64. # 添加1级标题
  65. document.add_heading('一级标题样式', level=1)
  66. # 添加段落,同时设置样式
  67. document.add_paragraph('缩进引用样式', style='Intense Quote')
  68. document.add_paragraph(
  69. '无序列表样式', style='List Bullet'
  70. )
  71. document.add_paragraph(
  72. '有序列表样式', style='List Number'
  73. )
  74. # 添加图片 ,同时设置大小
  75. document.add_picture('upload/img/test_1902_kxy.png', width=Inches(3.25))
  76. # 添加分页符
  77. document.add_page_break()
  78. # 添加表格
  79. table = document.add_table(rows=1, cols=7)
  80. hdr_cells = table.rows[0].cells
  81. hdr_cells[0].text = '序号'
  82. hdr_cells[1].text = '疫情地区'
  83. hdr_cells[2].text = '新增'
  84. hdr_cells[3].text = '现有'
  85. hdr_cells[4].text = '累计'
  86. hdr_cells[5].text = '治愈'
  87. hdr_cells[6].text = '死亡'
  88. for index, item in enumerate(exportObj['list']):
  89. row_cells = table.add_row().cells
  90. row_cells[0].text = str(index+1)
  91. row_cells[1].text = item['area']
  92. row_cells[2].text = item['confirmedRelative']
  93. row_cells[3].text = item['curConfirm']
  94. row_cells[4].text = item['confirmed']
  95. row_cells[5].text = item['crued']
  96. row_cells[6].text = item['died']
  97. # 将文档保存到demo.docx中
  98. document.save("upload/docx/global_1902_kxy.docx")
  99. return 'success'
  100. except Exception as ex:
  101. print(ex)
  102. return 'failure'