python 快速生成EXCEL及追加数据


 1 # -*- coding: utf-8 -*-
 2 from __future__ import unicode_literals
 3 
 4 import oss2
 5 import xlrd
 6 import xlwt
 7 from xlutils.copy import copy
 8 
 9 
10 class export_excel(object):
11     def __init__(self, p_path, rfilename, sheet_name="sheet_name", title_filed=None):
12         self.p_path = p_path  # 文件名字 "/home/xxxx/"
13         self.rfilename = rfilename  # 文件名字 "11111.xlsx"
14         self.sheet_name = sheet_name
15         self.title_filed = title_filed  # 标头
16 
17     # 新建excel-并写入表头
18     def write_excel_xls(self):
19         index = len(self.title_filed)  # 获取需要写入数据的行数
20         workbook = xlwt.Workbook()  # 新建一个工作簿
21         sheet = workbook.add_sheet(self.sheet_name)  # 在工作簿中新建一个表格
22         for i in range(0, index):
23             for j in range(0, len(self.title_filed[i])):
24                 sheet.write(i, j, self.title_filed[i][j])  # 像表格中写入数据(对应的行和列)
25         try:
26             workbook.save(self.p_path + self.rfilename)  # 保存工作簿
27         except Exception as e:
28             return {}
29         return {"msg": "创建excel文件成功", "code": "200"}
30 
31     # 写入数据
32     def write_excel_xls_append(self, value):
33         index = len(value)  # 获取需要写入数据的行数
34         workbook = xlrd.open_workbook(self.p_path + self.rfilename)  # 打开工作簿
35         sheets = workbook.sheet_names()  # 获取工作簿中的所有表格
36         worksheet = workbook.sheet_by_name(sheets[0])  # 获取工作簿中所有表格中的的第一个表格
37         rows_old = worksheet.nrows  # 获取表格中已存在的数据的行数
38         new_workbook = copy(workbook)  # 将xlrd对象拷贝转化为xlwt对象
39         new_worksheet = new_workbook.get_sheet(0)  # 获取转化后工作簿中的第一个表格
40 
41         try:
42             for i in range(0, index):
43                 for j in range(0, len(value[i])):
44                     new_worksheet.write(i + rows_old, j, value[i][j])  # 追加写入数据,注意是从i+rows_old行开始写入
45             new_workbook.save(str(self.p_path + self.rfilename))  # 保存工作簿
46         except Exception as e:
47             return {}
48         return {"msg": "插入写入数据成功", "code": "200"}
49 
50     # 上传至oss-清除本地暂存文件
51     def oss_post(self):
52         subfilename = "xxxxx/" + datetime.datetime.now().strftime("%Y%m/%d/")  # oss 路径
53         file_news = subfilename + self.rfilename
54         auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET)
55         bucket = oss2.Bucket(auth, END_POINT, BUCKET_NAME)
56         with open(self.p_path + self.rfilename, "rb") as fileobj:
57             result1 = bucket.put_object(file_news, fileobj)
58         if int(result1.status) == 200:
59             return {"msg": "上传oss成功", "code": "200", "task_url": ""}
60         else:
61             return {"msg": "上传oss失败", "code": "101"}
62 
63 
64 if __name__ == "__main__":
65     # 新建文件excel
66     cls_obj_export = export_excel(p_path=r'E:/GreatZhou/HD-DOC/', rfilename="1.xlsx", sheet_name="娃哈哈", title_filed=[["姓名", "性别", "年龄"], ])
67     totuch_ok = cls_obj_export.write_excel_xls()
68     if totuch_ok.get("code") == "200":
69         wr_result = cls_obj_export.write_excel_xls_append([["大头儿子", "", "3"], ["小头爸爸", "", "22"]])
70         print wr_result

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM