我目前有一个34x22 .xlsx电子表格。我通过pydrive下载它,填写一些空白值,然后通过pydrive上传文件。当我上传文件时,所有带公式的单元格都是空白的(任何以=开头的单元格)。我有一个我要上传的文件的本地副本,它看起来很好,所以我很确定问题必须是pydrive。
我的代码:
def upload_r1masterfile(filename='temp.xlsx'):
"""
Upload a given file to drive as our master file
:param filename: name of local file to upload
:return:
"""
# Get the file we want
master_file = find_r1masterfile()
try:
master_file.SetContentFile(filename)
master_file.Upload()
print 'Master file updated. ' + str(datetime.datetime.now())
except Exception, e:
print "Warning: Something wrong with file R1 Master File."
print str(e)
return e
我唯一的提示是,如果我将param={'convert': True}
标记添加到Upload
,那么就没有任何损失。但是,这意味着我现在正在使用谷歌工作表格式,我宁愿不这样做。不仅因为它不是在这里使用的执行格式,而且因为如果我尝试master_file.GetContentFile(filename)
我得到错误:没有在元数据中找到的mimetype的downloadLink / exportLinks
任何提示?上传时是否有其他属性我不知道?
谢谢!
答案 0 :(得分:1)
Robin能够帮助我在github repository回答这个问题。两个建议的解决方案都有效:
1)当您上传文件时,您是否先关闭Excel? IIRC MS Office将大量内容写入临时文件,这可以解释为什么某些部分丢失。如果您首先尝试非转换上载,则完整文件可能已在两次尝试之间保存到磁盘,因此第二次转换上载尝试有效。
2)GetContentFile采用名为mimetype的第二个参数,该参数允许您下载该文件。你能试试.GetContentFile(filename,mimetype =“application / vnd.ms-excel”)?如果该mimetype不能按预期工作,那么有一个很棒的StackOverflow post here列出了一些你可以尝试的不同类型。
再次感谢罗宾!