2016-06-09 2 views
0

В настоящее время у меня есть электронная таблица размером 34x22 .xlsx. Я загружаю его через pydrive, заполняя некоторые пустые значения и загружая файл обратно через 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, то нет никакой потери. Однако это означает, что теперь я работаю в формате листов Google, и я бы предпочел не делать этого. Не только потому, что здесь нет работающего формата, но и потому, что, если я пытаюсь сделать master_file.GetContentFile(filename), я получаю сообщение об ошибке: Нет downloadLink/exportLinks для mimetype, найденного в метаданных

Любые подсказки? Есть ли другой атрибут при загрузке, о котором я не знаю?

Спасибо!

ответ

1

Robin был в состоянии помочь мне ответить на этот вопрос на github repository. Оба предлагаемых решения:

1) When you upload the file, did you close Excel first? IIRC MS Office writes a lot of the content to a temporary file, so that may explain why some parts are missing. If you tried the non converting upload first, the full file may have been saved to disk between the two tries, and thus the second converting upload attempt worked.

2) GetContentFile takes a second argument called mimetype, which should allow you to download the file. Could you try .GetContentFile(filename, mimetype="application/vnd.ms-excel")? If that mimetype doesn't work as anticipated, there is a great StackOverflow post here which lists a bunch of different types you can try.

Еще раз спасибо Робин!

Смежные вопросы