Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用OpenPyXL导入多个Excel文件_Python_Excel_Openpyxl - Fatal编程技术网

Python 使用OpenPyXL导入多个Excel文件

Python 使用OpenPyXL导入多个Excel文件,python,excel,openpyxl,Python,Excel,Openpyxl,我正在尝试读取多个excel文件,并将每个文件中的数据附加到一个主文件中。每个文件都有相同的标题(因此我可以跳过导入初始文件后的第一行) 我对Python和OpenPyXL模块都很陌生。我可以毫无问题地导入第一个工作簿。当我需要打开后续文件并复制数据以粘贴到原始工作表中时,我的问题就出现了 以下是我目前的代码: # Creating blank workbook from openpyxl import Workbook wb = Workbook() # grab active worksh

我正在尝试读取多个excel文件,并将每个文件中的数据附加到一个主文件中。每个文件都有相同的标题(因此我可以跳过导入初始文件后的第一行)

我对Python和OpenPyXL模块都很陌生。我可以毫无问题地导入第一个工作簿。当我需要打开后续文件并复制数据以粘贴到原始工作表中时,我的问题就出现了

以下是我目前的代码:

# Creating blank workbook
from openpyxl import Workbook
wb = Workbook()

# grab active worksheet
ws = wb.active

# Read in excel data
from openpyxl import load_workbook
wb = load_workbook('first_file.xlsx') #explicitly loading workbook, will automate later

# grab active worksheet in current workbook
ws = wb.active

#get max columns and rows
sheet = wb.get_sheet_by_name('Sheet1')
print ("Rows: ", sheet.max_row) # for debugging purposes
print ("Columns: ", sheet.max_column) # for debugging purposes
last_data_point = ws.cell(row = sheet.max_row, column = sheet.max_column).coordinate
print ("Last data point in current worksheet:", last_data_point) #for debugging purposes

#import next file and add to master
append_point = ws.cell(row = sheet.max_row + 1, column = 1).coordinate
print ("Start new data at:", append_point)
wb = load_workbook('second_file.xlsx')
sheet2 = wb.get_sheet_by_name('Sheet1')
start = ws.cell(coordinate='A2').coordinate
print("New data start: ", start)
end = ws.cell(row = sheet2.max_row, column = sheet2.max_column).coordinate
print ("New data end: ", end)

# write a value to selected cell
#sheet[append_point] = 311
#print (ws.cell(append_point).value)

#save file
wb.save('master_file.xlsx')

谢谢

我不太懂你的代码。看起来太复杂了。在工作表之间复制时,您可能希望使用
ws.rows

wb1 = load_workbook('master.xlsx')
ws2 = wb1.active

for f in files:
    wb2 = load_workbook(f)
    ws2 = wb2['Sheet1']
    for row in ws2.rows[1:]:
          ws1.append((cell.value for cell in row))

这很好地发挥了作用。我将文件定义为一个文件名数组,并将ws1更改为ws,因为我没有在其他地方定义ws1。我不得不做一些其他的小编辑,但总的来说我理解你在做什么。日期的格式与原始格式不同,即“自定义”格式而不是“日期”格式。有没有一个简单的方法来解决这个问题而不使它过于复杂?我不知道你的意思,但没有“日期”格式。所有日期和时间或多或少都使用自定义格式。但这是一个单独的问题。是的,这是一个单独的问题。我的意思是,它被理解为2015-09-01 0:00:00,而不是2015年9月1日。本质上,它是以长日期格式而不是短日期格式出现的。但这不是什么大问题。Excel使用数字格式来区分数字、日期和时间,这是特定于区域设置的。openpyxl默认为ISO格式。要明确。如果需要其他内容,则需要提供显式格式。