新版本的Pandas使用以下界面加载Excel文件:
read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA'])
Run Code Online (Sandbox Code Playgroud)
但是,如果我不知道可用的床单怎么办?
例如,我正在使用以下表格的excel文件
数据1,数据2 ...,数据N,foo,bar
但我不知道N先验.
有没有办法从熊猫的excel文档中获取工作表列表?
如何将DataFrame列表导出到一个Excel电子表格中?
国家文件to_excel:
注意
如果传递现有的ExcelWriter对象,则表单将添加到现有工作簿中.这可用于将不同的DataFrame保存到一个工作簿
writer = ExcelWriter('output.xlsx')
df1.to_excel(writer, 'sheet1')
df2.to_excel(writer, 'sheet2')
writer.save()
在此之后,我想我可以编写一个函数,将一个DataFrame列表保存到一个电子表格中,如下所示:
from openpyxl.writer.excel import ExcelWriter
def save_xls(list_dfs, xls_path):
writer = ExcelWriter(xls_path)
for n, df in enumerate(list_dfs):
df.to_excel(writer,'sheet%s' % n)
writer.save()
Run Code Online (Sandbox Code Playgroud)
但是(带有两个小DataFrame的列表,每个都可以to_excel单独保存),会引发异常(编辑:删除跟踪):
AttributeError: 'str' object has no attribute 'worksheets'
Run Code Online (Sandbox Code Playgroud)
大概是我没有ExcelWriter正确地打电话,我应该怎么做才能做到这一点?
我被要求生成一些Excel报告.我目前正在为我的数据大量使用pandas,所以我当然希望使用pandas.ExcelWriter方法来生成这些报告.但是固定的列宽是个问题.
到目前为止我的代码很简单.假设我有一个名为'df'的数据框:
writer = pd.ExcelWriter(excel_file_path)
df.to_excel(writer, sheet_name="Summary")
Run Code Online (Sandbox Code Playgroud)
我正在查看pandas代码,我真的没有看到任何设置列宽的选项.宇宙中有没有一个技巧可以使列自动调整到数据?或者我可以在xlsx文件之后做些什么来调整列宽?
(我正在使用OpenPyXL库,并生成.xlsx文件 - 如果这有任何区别.)
谢谢.
我有以下脚本将CSV文件转换为XLSX文件,但我的列大小非常窄.每次我用鼠标拖动它们来读取数据.有人知道如何设置列宽openpyxl吗?
这是我正在使用的代码.
#!/usr/bin/python2.6
import csv
from openpyxl import Workbook
from openpyxl.cell import get_column_letter
f = open('users_info_cvs.txt', "rU")
csv.register_dialect('colons', delimiter=':')
reader = csv.reader(f, dialect='colons')
wb = Workbook()
dest_filename = r"account_info.xlsx"
ws = wb.worksheets[0]
ws.title = "Users Account Information"
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell
wb.save(filename = dest_filename)
Run Code Online (Sandbox Code Playgroud) 我想使用excel文件来存储用python详细说明的数据.我的问题是我无法将图纸添加到现有的Excel文件中.在这里,我建议使用示例代码来解决此问题
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
Run Code Online (Sandbox Code Playgroud)
此代码将两个DataFrame保存为两个表,分别名为"x1"和"x2".如果我创建两个新的DataFrame并尝试使用相同的代码添加两个新工作表'x3'和'x4',原始数据将丢失.
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)
x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name …Run Code Online (Sandbox Code Playgroud) 我正在处理一个处理大量Excel 2007文件的应用程序,而我正在使用OpenPyXL来完成它.OpenPyXL有两种不同的读取Excel文件的方法 - 一种是"普通"方法,其中整个文档一次加载到内存中,另一种方法是使用迭代器逐行读取.
问题是,当我使用迭代器方法时,我没有得到任何文档元数据,如列宽和行/列数,我真的需要这些数据.我假设这些数据存储在靠近顶部的Excel文档中,因此不必将整个10MB文件加载到内存中以访问它.
那么,有没有办法获得行/列数和列宽,而无需先将整个文档加载到内存中?
我需要在Openpyxl中设置样式的建议.
我看到可以设置单元格的NumberFormat,但我还需要设置字体颜色和属性(粗体等).有一个style.py类,但似乎我无法设置单元格的样式属性,我真的不想开始修改openpyxl源代码.
有没有人找到解决方案?
我有一个中等大小的xlsx文件(大约14 MB),OpenOffice挂起试图打开它.我按照本教程尝试使用openpyxl来阅读内容.代码段如下:
from openpyxl import load_workbook
wb = load_workbook(filename = 'large_file.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'big_data')
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道工作表名称,而Sheet1/Sheet2 ..等不起作用(返回NoneType对象).我找不到一个文档告诉我如何使用openpyxl获取xlsx文件的工作表名称.谁能帮我?
我遇到了这个问题,因为cell.value函数返回用于单元格的公式,我需要在操作后提取Excel提供的结果.
谢谢.
好吧,我想我找到了解决办法; 显然要访问cell.internal值,你必须先在工作表中使用iter_rows(),这是一个"RawCell"列表.
for row in ws.iter_rows():
for cell in row:
print cell.internal_value
Run Code Online (Sandbox Code Playgroud) 我正在使用openpyxl来读取单元格值(excel addin-webservice更新此列.)
我已经使用data_only = True但它没有显示当前单元格值,而是它是上次Excel读取工作表时存储的值.
wbFile = openpyxl.load_workbook(filename = xxxx,data_only=True)
wsFile = wbFile[c_sSheet]
Run Code Online (Sandbox Code Playgroud)
我如何读取单元格的实际值?