我正在尝试使用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")
答案 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方式打开的文件。