exceltool.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #-*-coding:utf-8 -*-
  2. import StringIO
  3. import xlwt
  4. import xlrd
  5. import requests
  6. import time
  7. from PIL import Image
  8. def download_remote_img(url):
  9. """
  10. """
  11. imgname = "/tmp/" + str(int(time.time()*1000))+".bmp"
  12. with open(imgname,"wb+") as f:
  13. res = requests.get(url)
  14. if res.status_code == 200:
  15. f.write(res.content)
  16. return imgname
  17. class ExcelTool(object):
  18. """
  19. """
  20. def __init__(self,filename=None):
  21. self.filename = filename
  22. self.book = xlwt.Workbook(encoding="utf-8",style_compression=0)
  23. self.rbook = xlrd.open_workbook(filename)
  24. self.sheet = self.rbook.sheet_by_index(0)
  25. def save_data(self,sheet,header,data):
  26. """
  27. """
  28. sheet = self.book.add_sheet(sheet,cell_overwrite_ok=True)
  29. #添加表头
  30. for i in range(0,len(header)):
  31. sheet.write(0,i,header[i])
  32. #添加数据
  33. style = xlwt.easyxf('align: wrap on')
  34. for i in range(0,len(data)):
  35. for j in range(0,len(data[i])):
  36. if j < len(data[i])-1:
  37. sheet.write(i+1,j,data[i][j],style)
  38. else:
  39. if i < 5:
  40. self.insert_imgs(sheet,data[i][j],(i,j))
  41. output = StringIO.StringIO()
  42. self.book.save(output)
  43. self.book.save("/tmp/demo.xls")
  44. return output.getvalue()
  45. def insert_imgs(self,sheet,imgs,cell):
  46. """
  47. """
  48. return
  49. i,j = cell
  50. for index,img in enumerate(imgs):
  51. j = j+index
  52. #imgpath = download_remote_img(img)
  53. #sheet.insert_bitmap(imgpath,i,j,scale_x=1, scale_y=1)
  54. def get_data(self):
  55. """
  56. """
  57. dct = {}
  58. data = []
  59. for i in range(1, self.sheet.nrows):
  60. row_list = self.sheet.row_values(i)
  61. data.append(row_list)
  62. return data
  63. #if __name__ == "__main__":
  64. # mexcel = ExcelTool("/tmp/demo.xls")
  65. # mexcel.save_data(u"测试",[u"事件类型"],[[u"漏洞事件"]])