1. 如果请求头里有: 代表下载的excel文件流需要一个文件写入
X-Requested-With: XMLHttpRequest
def download_order(self, kwargs):
"""下载导入模板"""
# print(kwargs)
result = self.request.do_request(method=kwargs["method"],
url=self.url + kwargs["path"],
data=kwargs["data"],
headers=self.Cookie)
if result.text: # 判断文件是否为空
with open(path + "/data/pool.xlsx", "wb") as pool:
logger.info("联营模板开始写入")
for data in result.iter_content(chunk_size=1): # iter_content循环读取信息写入,chunk_size设置文件大小
pool.write(data)
else:
logger.info("联营excel返回结果是空的")
2. 如果请求头里有: 那么就不是普通的excel上传
Content-Type: multipart/form-data
# 需要下载: pip install requests_toolbelt
from requests_toolbelt import MultipartEncoder
def out_pool(self, kwargs):
"""联营订单导入"""
file = open(path + "/data/pool.xlsx", "rb") # 打开文件流
# fields={"name":(文件名,文件流)}
data = MultipartEncoder(fields={"name": ("pool.xlsx", file)})
header_data = {"Content-Type": data.content_type} # 固定语法
header_data.update(self.Cookie) # 拼接cookie
# print(header_data)
result = self.request.do_request(method=kwargs["method"],
url=self.url + kwargs["path"],
data=data,
headers=header_data)
file.close()
logger.info(result.json())
3. 上传excel明明有数据却提示无数据:
def just_excel(): # 重新打开excel并保存,必填,否则报错 ,固定语法,只需修改文件路径
excel = Dispatch("Excel.Application") # 模拟打开 office
excel.Visible = False
work = excel.Workbooks.Open(
os.path.abspath(os.path.dirname(__file__)).rsplit("\\", 1)[0] + "\data\pool.xlsx") # 必须写绝对路径
work.Save() # 保存文档
work.Close() # 关闭文档
excel.Workbooks.Close() # 保存并关闭文档
excel.Quit() # 关闭excel
4. 读取excel会有警告信息
from win32com.client.dynamic import Dispatch
warnings.simplefilter('ignore') # 忽略警告,将此段放在读取excel函数中