pydrive:上传期间丢失文件内容()

时间:2016-06-09 21:44:09

标签: pydrive

我目前有一个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

任何提示?上传时是否有其他属性我不知道?

谢谢!

1 个答案:

答案 0 :(得分:1)

Robin能够帮助我在github repository回答这个问题。两个建议的解决方案都有效:

  

1)当您上传文件时,您是否先关闭Excel? IIRC MS Office将大量内容写入临时文件,这可以解释为什么某些部分丢失。如果您首先尝试非转换上载,则完整文件可能已在两次尝试之间保存到磁盘,因此第二次转换上载尝试有效。

     

2)GetContentFile采用名为mimetype的第二个参数,该参数允许您下载该文件。你能试试.GetContentFile(filename,mimetype =“application / vnd.ms-excel”)?如果该mimetype不能按预期工作,那么有一个很棒的StackOverflow post here列出了一些你可以尝试的不同类型。

再次感谢罗宾!