我使用pandas以下列方式写入excel文件:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx') 
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Masterfile.xlsx已包含许多不同的选项卡.
Pandas正确写入"Main"表,不幸的是它还删除了所有其他选项卡.
我正在尝试将工作表复制default_sheet到new_sheet同一工作簿中的新工作表中.
我设法创建了一个新工作表并从默认工作表复制值.如何将每个单元格的样式复制到new_sheet单元格中?
new_sheet = workbook.create_sheet()
new_sheet.title = sheetName
default_sheet = workbook.get_sheet_by_name('default')
new_sheet = workbook.get_sheet_by_name(sheetName)
for row in default_sheet.rows:
    col_idx = float(default_sheet.get_highest_column())
starting_col = chr(65 + int(col_idx))
for row in default_sheet.rows:
    for cell in row:
        new_sheet[cell.get_coordinate()] = cell.value
        <copy also style of each cell>
我目前正在使用openpyxl 1.8.2,但我想切换到1.8.5.
一个解决方案是复制:
from copy import copy, deepcopy
new_sheet._styles[cell.get_coordinate()] = copy(
        default_sheet._styles[cell.get_coordinate()])
我需要将24个pandas数据框(140列x 400行)导出到Excel,每个都放到不同的工作表中.
我正在使用熊猫的内置功能ExcelWriter.运行24个场景,需要:
写入.xls文件51秒(使用xlwt)
写入.xlsx文件86秒(使用XlsxWriter)
141秒写入.xlsm文件(使用openpyxl)
只运行程序21秒(无Excel输出)
写入的问题.xls是电子表格不包含格式化样式,因此如果我在Excel中打开它,选择一个列,然后单击"逗号"按钮来格式化数字,它告诉我:"未找到样式逗号".我没有把这个问题写到一个.xlsx,但这甚至更慢.
有关如何使出口更快的任何建议?我不能成为第一个遇到这个问题的人,但经过几个小时的搜索论坛和网站,我还没有找到任何明确的解决方案.
我唯一能想到的是使用Python导出到csv文件,然后编写一个Excel宏来将所有CSV合并到一个电子表格中.
该.xls文件是10 MB,.xlsx5.2 MB
谢谢!
我有一个关于将数据框附加到现有文件的现有工作表的问题。
我尝试自己写代码
writer = pd.ExcelWriter('existingFile.xlsx', engine='openpyxl', mode='a')
df.to_excel(writer, sheet_name="existingSheet", startrow=writer.sheets["existingSheet"].max_row, index=False, header=False)
这会导致错误
ValueError:工作表“existingSheet”已存在,并且 if_sheet_exists 设置为“错误”。
我用谷歌搜索并在这里找到了这个功能;
使用 python pandas 将新数据框附加到现有 Excel 工作表
即使使用这个函数,它仍然会导致相同的错误,即使我认为这个函数可以防止我所认为的这个确切错误。
能否请你帮忙?
非常感谢!
我正在尝试将一系列 Pandas DataFrames 写入 Excel 工作表,以便:
对于 1),我以@MaxU 编写的辅助函数的形式找到了一个很好的解决方案:如何在不覆盖数据的情况下写入现有的 excel 文件(使用 Pandas)?. 对于 2) 我在这里找到了一个很好的解决方案。但是当我尝试将这些解决方案放在一起时,列宽根本不会改变。这是我的完整代码:
import pandas as pd
import os
from openpyxl import load_workbook
def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                       truncate_sheet=False, 
                       **to_excel_kwargs):
    """
    Append a DataFrame [df] to existing Excel file [filename]
    into [sheet_name] Sheet.
    If [filename] doesn't exist, then this function will create it.
    @param filename: File path or existing ExcelWriter
                     (Example: '/path/to/file.xlsx')
    @param df: DataFrame to save to …我想将数据框保存到文件的第二张纸,但我不能这样做,我也不知道为什么。
yfile = openpyxl.load_workbook(new_file, data_only=True) 
ws = yfile.worksheets[0] 
sheet2 = yfile.create_sheet() 
ws2 = yfile.get_sheet_by_name("Sheet").title = "Analysis" 
writer = pd.ExcelWriter(yfile, engine='xlsxwriter') 
df3.to_excel(writer, sheet_name='Analysis') 
writer.save()
yfile.save(new_file)                                          
我已经创建了“分析”表,但是当我在其中保存时,我收到了以下响应:“AttributeError: 'Workbook' object has no attribute 'write'”
我必须修改什么?
我有一张excel表,在某些单元格中已有一些值.
例如: -
        A      B      C      D
1      val1   val2          val3
2             valx   valy        
我想要大熊猫写入特定的细胞而不接触任何其他细胞,薄片等
这是我试过的代码.
import pandas as pd
from openpyxl import load_workbook
df2 = pd.DataFrame({'Data': [13, 24, 35, 46]})
book = load_workbook('b.xlsx')
writer = pd.ExcelWriter('b.xlsx', engine='openpyxl')
df2.to_excel(writer, "Sheet1", startcol=7,startrow=6)
writer.save()
但是,此代码会删除较旧的单元格值.
我已经提到: - 如何写入现有的excel文件而不覆盖数据(使用pandas)? 但这个解决方案不起作用.
我希望将数据框附加到excel
这段代码几乎可以满足需求.虽然每次都不附加.我运行它,它将数据框放在excel中.但每次我运行它都不会附加.我也听说openpyxl是cpu密集型但没有听说过很多变通方法.
import pandas
from openpyxl import load_workbook
book = load_workbook('C:\\OCC.xlsx')
writer = pandas.ExcelWriter('C:\\OCC.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df1.to_excel(writer, index = False)
writer.save()
我希望每次运行时都追加数据,这种情况不会发生.
数据输出看起来像原始数据:
A   B   C
H   H   H
我希望在第二次跑完之后
A   B    C
H   H    H
H   H    H
抱歉,如果这很明显我是python的新手,我练习的例子并没有按照需要工作.
问题是 - 我每次运行时如何附加数据.我尝试更改为xlsxwriter,但得到AttributeError: 'Workbook' object has no attribute 'add_format'
我想将 panda 数据框的内容附加df到 Excel 表中。
这就是我所做的;
df.to_excel(excel_writer="target.xlsx", sheet_name="sheet_1")
这段代码的问题是它覆盖了target.xlsx. target.xlsx结果我丢失了所有旧数据。我想要代码做的是附加而不是覆盖 Excel 工作表。
我正在使用Python 3.7。
我有以下代码,我正在尝试将数据框写入 Excel 文件的“现有”工作表(此处称为 test.xlsx)。Sheet3 是我要放置数据的目标工作表,我不想用新工作表替换整个工作表。
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
book = load_workbook('test.xlsx')
writer = pd.ExcelWriter('test.xlsx')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets) # *I am not sure what is happening in this line*
df.to_excel(writer,"Sheet3",startcol=0, startrow=20)
当我逐行运行代码时,最后一行出现此错误:
AttributeError: 'Workbook' 对象没有属性 'add_worksheet'。现在为什么当我不尝试添加工作表时会看到此错误?
注意:我知道这个类似的问题Python How to use ExcelWriter to write into an existing worksheet但它对我不起作用,我也无法评论该帖子。
我想做的是将数据帧数据附加到现有的合法 Excel 文件中。我使用了 openpyxl 中的 load_workbook() 函数,但它系统地返回错误。这是一些在我的机器上崩溃的代码:
from openpyxl import load_workbook
report_path = root_folder + '\\log_report.xlsx'
writer = pd.ExcelWriter(report_path, engine='openpyxl')
writer.book = load_workbook(report_path)
writer.close()
这里,log_report.xlsx已经存在并且是通过pandas .to_excel()创建的。在使用 openpyxl load_workbook() 打开之前,可以打开它、编辑它并执行 MS Excel 允许的任何操作。我收到以下错误返回:
Traceback (most recent call last):
  File "D:/failsafe_counter/main.py", line 419, in <module>
    writer.book = load_workbook(report_path)
  File "D:\failsafe_counter\venv\lib\site-packages\openpyxl\reader\excel.py", line 315, in load_workbook
    reader = ExcelReader(filename, read_only, keep_vba,
  File "D:\failsafe_counter\venv\lib\site-packages\openpyxl\reader\excel.py", line 124, in __init__
    self.archive = _validate_archive(fn)
  File "D:\failsafe_counter\venv\lib\site-packages\openpyxl\reader\excel.py", line 96, in _validate_archive
    archive = ZipFile(filename, 'r')
  File "C:\Users\XXXX\AppData\Local\Programs\Python\Python38-32\lib\zipfile.py", line 1269, …使用最新的软件包版本:openpyxl:3.0.6 | 熊猫:1.2.3 |蟒蛇:3.9
在将上面的软件包更新到报告的最新版本之前,下面的功能运行良好。
现在它会引发错误:“zipfile.BadZipFile:文件不是 zip 文件”。
这样的功能确实很有用,并且很高兴知道它是否可以修复以使其正常工作。
下面的函数可以直接运行,只需将“pathExport”替换为您的导出目录进行测试即可。
    def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                           truncate_sheet=False, 
                           **to_excel_kwargs):
        """
        Append a DataFrame [df] to existing Excel file [filename]
        into [sheet_name] Sheet.
        If [filename] doesn't exist, then this function will create it.
    
        Parameters:
          filename : File path or existing ExcelWriter
                     (Example: '/path/to/file.xlsx')
          df : dataframe to save to workbook
          sheet_name : Name of sheet which will contain DataFrame.
                       (default: 'Sheet1')
          startrow : upper left cell row to dump data frame.
                     Per default …excel ×10
pandas ×10
python ×10
openpyxl ×6
dataframe ×2
python-3.x ×2
export ×1
output ×1
python-2.7 ×1
python-3.9 ×1
xlsx ×1
xlsxwriter ×1