Чтение нескольких файлов Excel и сохранение данных в словаре win32 - PullRequest
0 голосов
/ 21 ноября 2018
xlDoc =  win32com.client.gencache.EnsureDispatch("Excel.Application")
writefile=xlDoc.Workbooks.Open("M:\Python automation\Main.xlsx")
count = writefile.Sheets.Count
print "count", count
Sheetcount=count-1
for i,sht in enumerate(writefile.Sheets):
    print "i",i
    if i==0:
        print ""
    else:
        xlDoc.Worksheets(sht.Name).Activate()
        xlSht = xlDoc.ActiveSheet
        name=xlSht.Name
        filename =os.path.join(dir,name+".xlsx")
        print filename
        key=i+1
        data[key]= ReadData(filename)


#To read data from excel 
def ReadData(filename):
    xlApp = Dispatch("Excel.Application")
    xlApp.Quit()                                        #Close excel sheet if open
    xlApp.Visible=False
    ##xlWb = xlApp.Workbooks.Open(filename)
    print "Reading "
    DataTemp = []
    xlWb = xlApp.Workbooks.Open(filename)
    Sheet= xlWb.Sheets(1)
    used = Sheet.UsedRange
    nrows = used.Row + used.Rows.Count - 1
    ncols = used.Column + used.Columns.Count - 1
    while (Sheet.Cells(nrows,1).Value) != None:
            nrows += nrows
    #Read all data 
    DataTuple = Sheet.Range("A2:N%d" % nrows).Value
    DataList = [list(x) for x in DataTuple]
    for rowA in DataList:
            for n,i in enumerate(rowA):
                    if i == None:
                            rowA[n] = ''
            DataTemp.append(rowA)
    xlWb.Close(True)
    xlApp.Application.Quit()
    return DataTemp

Я должен прочитать имена листов основного файла Excel и использовать имена, чтобы прочитать соответствующие файлы Excel в папке и сохранить данные в словаре.Мой текущий код больше не читает файлы Excel после прочтения первого файла Excel.

Основной файл Excel имеет 4 листа, но продолжается только чтение второго листа «Bon», а затем останавливается.

Вывод:
PS M: \ Python автоматизации> python try.py
count 4
i 0

i 1
M: \ Python Automation \ Bon.xlsx
Чтение
PS M: \ Автоматизация Python>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...