通过COM接口使用Python打开损坏的Excel文件

时间:2017-11-13 20:45:35

标签: python excel com-interface

我正在尝试使用Python中的COM接口打开excel文件。 通常它很容易但这次我打开已损坏的文件时遇到问题。 错误我看起来像这样(部分用波兰语):

com_error: (-2147352567, 'Wyst\xb9pi\xb3 wyj\xb9tek.', (0, u'Microsoft Excel', u'Open method of Workbooks class failed', u'xlmain11.chm', 0, -2146827284), None)

我通过在Open方法中使用其他参数corruptload:=xlRepairFile来解决此前在VBA中遇到的问题。 你有任何想法如何在Python中做到这一点?

下面的代码不起作用。

excel.Workbooks.Open(latest_file, CorruptLoad = "xlRepairFile")

1 个答案:

答案 0 :(得分:0)

尝试:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#if defined(WIN32) || defined(_WIN32)
    #include <windows.h>
#endif

int main(void) {
#if defined(WIN32) || defined(_WIN32) //for latin2
    SetConsoleCP(1250);
    SetConsoleOutputCP(1250);
#endif
    //char* onerow=(char*) malloc(num*sizeof(char));
    char* onerow[250];
    char c;
    int row=3, j=0;

    FILE *fp;
    fp = fopen("proba.txt", "r");

    for (int i=0; i<=row; i++) {
        if(i!=row-1) {          //not the row we need, jump over it
            while(c!='\n')
                c=fgetc(fp);
            c='a'; //to make true while next time
        }
        if(i==row-1) {
            while(c!='\n') {    //this is what we need
                //onerow[j]=fgetc(fp);
                //onerow = (char*)realloc(onerow, ++num*sizeof(char));
                c=fgetc(fp);
                printf("%c", c); //this is working well (prints everyth.)
                onerow[j++]=c;
            }
        }
    }
    onerow[j-1]='\0';
    fclose(fp);
    printf("%s", onerow); //prints only the first charachter
    //free(onerow);
}

有一个例子here让某人开始工作。他们的完整例子是:

excel.Workbooks.Open(latest_file, CorruptLoad=1)

他们还注意到:

  

需要使用DisplayAlerts来防止Excel询问是否应该这样做   保存一个首先以ReadOnly方式打开的文件。