使用 openpyxl 后无法打开 excel 文件
Cannot open the excel file after openpyxl usage
我正在 2 sheet 秒内写入 excel 文件 - sheet1
和 geodata
。
test_df = DataFrame({'col1':[1,2,3,4], 'col2':['a','b','c','d']})
test2_df = DataFrame({'lat':[89.0, 34.89, 23.56],'lng':[45.6, 67.9, 89.0]}, index = ['Paris','Spain','Barcelona'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'xlsxwriter')
test_df.to_excel(writer, 'sheet1')
test2_df.to_excel(writer, 'geodata')
writer.save()
writer.close()
稍后将另一个新 sheet sheet3
和一些其他数据写入同一文件 geodata
。当我 运行 下面的代码块并尝试从文件夹中打开 excel sheet 时,出现无法打开的错误消息。
test3_df = DataFrame({'col1':[3,5,6], 'col2':['x','y','k']})
test2_new_df = DataFrame({'lat':[44.6,38.9],'lng':[35.7,89.3]},index=['US','UK'])
from openpyxl import load_workbook
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl')
writer.book = load_workbook('./test_book.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
test3_df.to_excel(writer,'Sheet3')
test2_new_df.to_excel(writer, 'geodata',header = False, startrow =len(test2_df)+1)
writer.close()
当我第二次 运行 这段代码时,我就可以打开文件了。但是我在 geodata
中附加了两次与索引 'US'
& 'UK'
相关的新值。我尝试了多种方法,但在 运行 第一次使用此代码后无法打开文件。
你不应该 import
代码中间的库。始终 import
在代码的顶部。我已经复制了您的代码并对作为引擎的 xlsxwriter
做了一点小改动,我对生成的文件没有任何问题。
import openpyxl
from openpyxl import *
from openpyxl.styles import NamedStyle
from openpyxl import load_workbook
import pandas as pd
test_df = pd.DataFrame({'col1':[1,2,3,4], 'col2':['a','b','c','d']})
test2_df = pd.DataFrame({'lat':[89.0, 34.89, 23.56],'lng':[45.6, 67.9, 89.0]}, index = ['Paris','Spain','Barcelona'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl') #I changed this to openpyxl, from xlsxwriter
test_df.to_excel(writer, 'sheet1')
test2_df.to_excel(writer, 'geodata')
writer.save()
writer.close()
test3_df = pd.DataFrame({'col1':[3,5,6], 'col2':['x','y','k']})
test2_new_df = pd.DataFrame({'lat':[44.6,38.9],'lng':[35.7,89.3]},index=['US','UK'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl')
writer.book = load_workbook('./test_book.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
test3_df.to_excel(writer,'Sheet3')
test2_new_df.to_excel(writer, 'geodata',header = False, startrow =len(test2_df)+1)
writer.close()
输出:
工作表 1:
地理数据:
工作表 3:
我正在 2 sheet 秒内写入 excel 文件 - sheet1
和 geodata
。
test_df = DataFrame({'col1':[1,2,3,4], 'col2':['a','b','c','d']})
test2_df = DataFrame({'lat':[89.0, 34.89, 23.56],'lng':[45.6, 67.9, 89.0]}, index = ['Paris','Spain','Barcelona'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'xlsxwriter')
test_df.to_excel(writer, 'sheet1')
test2_df.to_excel(writer, 'geodata')
writer.save()
writer.close()
稍后将另一个新 sheet sheet3
和一些其他数据写入同一文件 geodata
。当我 运行 下面的代码块并尝试从文件夹中打开 excel sheet 时,出现无法打开的错误消息。
test3_df = DataFrame({'col1':[3,5,6], 'col2':['x','y','k']})
test2_new_df = DataFrame({'lat':[44.6,38.9],'lng':[35.7,89.3]},index=['US','UK'])
from openpyxl import load_workbook
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl')
writer.book = load_workbook('./test_book.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
test3_df.to_excel(writer,'Sheet3')
test2_new_df.to_excel(writer, 'geodata',header = False, startrow =len(test2_df)+1)
writer.close()
当我第二次 运行 这段代码时,我就可以打开文件了。但是我在 geodata
中附加了两次与索引 'US'
& 'UK'
相关的新值。我尝试了多种方法,但在 运行 第一次使用此代码后无法打开文件。
你不应该 import
代码中间的库。始终 import
在代码的顶部。我已经复制了您的代码并对作为引擎的 xlsxwriter
做了一点小改动,我对生成的文件没有任何问题。
import openpyxl
from openpyxl import *
from openpyxl.styles import NamedStyle
from openpyxl import load_workbook
import pandas as pd
test_df = pd.DataFrame({'col1':[1,2,3,4], 'col2':['a','b','c','d']})
test2_df = pd.DataFrame({'lat':[89.0, 34.89, 23.56],'lng':[45.6, 67.9, 89.0]}, index = ['Paris','Spain','Barcelona'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl') #I changed this to openpyxl, from xlsxwriter
test_df.to_excel(writer, 'sheet1')
test2_df.to_excel(writer, 'geodata')
writer.save()
writer.close()
test3_df = pd.DataFrame({'col1':[3,5,6], 'col2':['x','y','k']})
test2_new_df = pd.DataFrame({'lat':[44.6,38.9],'lng':[35.7,89.3]},index=['US','UK'])
writer = pd.ExcelWriter('./test_book.xlsx', engine = 'openpyxl')
writer.book = load_workbook('./test_book.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
test3_df.to_excel(writer,'Sheet3')
test2_new_df.to_excel(writer, 'geodata',header = False, startrow =len(test2_df)+1)
writer.close()
输出:
工作表 1:
地理数据:
工作表 3: