Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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 使用定义的名称范围将dataframe转换为Excel_Python_Excel_Pandas - Fatal编程技术网

Python 使用定义的名称范围将dataframe转换为Excel

Python 使用定义的名称范围将dataframe转换为Excel,python,excel,pandas,Python,Excel,Pandas,我想在代码运行时将不同大小的多个df写入Excel 某些表将包含源数据,而其他表将包含对该源数据进行操作的Excel公式 我希望公式df包含对源数据df的Excel引用,而不是跟踪我写入源数据的单元格范围 这可以通过Excel的名称或Excel的表格功能来完成 例如,在我的公式df中,我可以拥有=索引(我的定义的名称源数据,4,3)*2和Excel名称我的定义的名称源数据是我索引源数据所需的全部 Openpyxl在这里详细介绍了如何编写表 表不支持多索引df.to_excel将创建的合并单元格

我想在代码运行时将不同大小的多个df写入Excel

某些表将包含源数据,而其他表将包含对该源数据进行操作的Excel公式

我希望公式df包含对源数据df的Excel引用,而不是跟踪我写入源数据的单元格范围

这可以通过Excel的名称或Excel的表格功能来完成

例如,在我的公式df中,我可以拥有=索引(我的定义的名称源数据,4,3)*2和Excel名称我的定义的名称源数据是我索引源数据所需的全部

Openpyxl在这里详细介绍了如何编写表

表不支持多索引df.to_excel将创建的合并单元格

所以我看的是定义好的名字。在openpyxl中,几乎没有使用 wb.defined_names.append() 这就是我发现的

我需要帮助的是:如何将数据框写入Excel并为其指定Excel定义的名称。文档和在线示例几乎不存在


我也很感激地接受了其他想法的建议,因为我似乎正在访问几乎没有人使用的东西。

我通过简单地从OpenPyXL切换到XLSXWriter解决了这个问题


我通过简单地从OpenPyXL切换到XLSXWriter解决了这个问题

使用“xlsxwriter”库可以创建Excel数据表,因此我编写了以下函数来获取数据帧,将其写入Excel,然后将数据转换为数据表

def dataframe_to_excel_表(df,xl_文件,xl_表名,xl_表='Sheet1'):
"""
传递数据框、文件名、表名和Excel工作表名。
保存df的excel文件,格式为命名的excel“数据表”
*需要“xlsxwriter”库($pip安装xlsxwriter)
:param df:dataframe对象
:param xl_file:要创建的Excel文件的文件名
:param xl_sheet:包含工作表/选项卡名称的字符串
:param xl_tablename:excel文件中的数据表名称
:return:Nothing/新建Excel文件
"""
#Excel不喜欢多索引df。转换为每列/每行1个值
#看https://stackoverflow.com/questions/14507794
df.reset_index(inplace=True)#展开多索引
#将数据框写入Excel
writer=pd.ExcelWriter(路径=xl\u文件,
engine='xlsxwriter',
datetime_format='yyyy-mm-dd hh:mm:ss')
df.to\U excel(编写器,索引=False,工作表名称=xl\U工作表)
#获取数据的维度以调整表的大小
行数,列数=df.shape
#制作形式为[{'header':col_name},…]的词典列表
#以使表不覆盖列标题名称
# https://xlsxwriter.readthedocs.io/example_tables.html#ex-桌子
dataframes\u cols=df.columns.tolist()
col_list=[{'header':col}用于数据帧中的col_cols]
#将Excel文件中的数据转换为Excel数据表
工作表=编写器工作表[xl_工作表]
工作表。添加表格(0,0,#从单元格“A1”开始)
行数,列数-1,
{'name':xl_表名,
“列”:列列表})
writer.save()
使用“xlsxwriter”库可以创建Excel数据表,因此我编写了以下函数来获取数据框,将其写入Excel,然后将数据转换为数据表

def dataframe_to_excel_表(df,xl_文件,xl_表名,xl_表='Sheet1'):
"""
传递数据框、文件名、表名和Excel工作表名。
保存df的excel文件,格式为命名的excel“数据表”
*需要“xlsxwriter”库($pip安装xlsxwriter)
:param df:dataframe对象
:param xl_file:要创建的Excel文件的文件名
:param xl_sheet:包含工作表/选项卡名称的字符串
:param xl_tablename:excel文件中的数据表名称
:return:Nothing/新建Excel文件
"""
#Excel不喜欢多索引df。转换为每列/每行1个值
#看https://stackoverflow.com/questions/14507794
df.reset_index(inplace=True)#展开多索引
#将数据框写入Excel
writer=pd.ExcelWriter(路径=xl\u文件,
engine='xlsxwriter',
datetime_format='yyyy-mm-dd hh:mm:ss')
df.to\U excel(编写器,索引=False,工作表名称=xl\U工作表)
#获取数据的维度以调整表的大小
行数,列数=df.shape
#制作形式为[{'header':col_name},…]的词典列表
#以使表不覆盖列标题名称
# https://xlsxwriter.readthedocs.io/example_tables.html#ex-桌子
dataframes\u cols=df.columns.tolist()
col_list=[{'header':col}用于数据帧中的col_cols]
#将Excel文件中的数据转换为Excel数据表
工作表=编写器工作表[xl_工作表]
工作表。添加表格(0,0,#从单元格“A1”开始)
行数,列数-1,
{'name':xl_表名,
“列”:列列表})

writer.save()
在openpyxl中,使用create\u named\u range()。这里还有一些用法:在openpyxl中,使用create_named_range()。这里还有一些用法: