- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
日期结束在单元格的右下角,显然忽略了 xlsxwriter 的对齐设置。 MWE:
import pandas
df = pandas.DataFrame(
{
"ints": [1, 2, 3]
, 'primes': [2, 3, 5]
, 'odds': [1, 3, 5]
, 'fechas': ['2017-04-07', '2017-05-09', '2017-11-30']
}
)
df['fechas'] = pandas.to_datetime(df['fechas']).dt.date
print(df)
xlsx_writer = pandas.ExcelWriter(
'test.xlsx'
, engine='xlsxwriter'
, date_format='mm/dd/yyyy'
)
df.to_excel(xlsx_writer, sheet_name='Sheet1', index=False)
wb = xlsx_writer.book
ws = xlsx_writer.sheets['Sheet1']
dollar_format = '_($* #,##0.00" "_);_($* (#,##0.0);_($* "-"??_);_(@_)'
dollar_format_wb = wb.add_format({'num_format': dollar_format, 'valign': 'vcenter'})
centre_format_wb = wb.add_format({'align': 'center', 'valign': 'vcenter'})
ws.set_column('A:A', 25, centre_format_wb)
ws.set_column('B:B', 20, centre_format_wb)
ws.set_column('C:C', 15, centre_format_wb)
ws.set_column('D:D', 10, dollar_format_wb)
# The code below was included to generate the screenshot, but isn't
# strictly necessary for the MWE
shadedrow_format_wb = wb.add_format(
{
'bg_color': '#EEEEEE'
, 'left': 1
, 'left_color': '#FFFFFF'
}
)
for r in range(0, 2 + df.shape[0]):
ws.set_row(r + 1, 45)
print(r)
if r % 2 == 0:
# a kludge as we can't change cell range formats after the fact without re-entering cell contents
ws.conditional_format('A{:}:D{:}'.format(r, r), {'type': 'no_errors', 'format': shadedrow_format_wb})
print("\t", r)
xlsx_writer.save()
A、B 和 C 列应水平居中,除标题外的所有行的高度应为 45,所有单元格内容应垂直居中。
一切正常,日期列除外。有充分的理由认为这不起作用吗?是否有使日期居中的正确方法?这是一个错误吗?有解决方法吗?
我也试过先格式化工作表,最后执行 df.to_excel()
,但没有效果。
非常感谢!
最佳答案
我提供了一个示例,说明如何使用 pandas 在 .xlsx 输出中实现所需的日期格式。它还需要添加日期时间模块。
正如@jmcnamara 提到的,我认为最好和最灵活的解决方案是直接使用 xlsxwriter。
这是一个 link to another SO answer它提供了有关 excel“序列日期”格式的更多背景知识,并从 python 中的日期时间对象获取它。这与我将列转换为 Excel 日期所做的操作基本相同。我还添加了一种附加格式(称为“centre_date_format_wb”)。
这是包含我的添加/更改的完整代码:
import pandas
import datetime
df = pandas.DataFrame(
{
"ints": [1, 2, 3]
, 'primes': [2, 3, 5]
, 'odds': [1, 3, 5]
, 'fechas': ['2017-04-07', '2017-05-09', '2017-11-30']
}
)
df['fechas'] = pandas.to_datetime(df['fechas']).dt.date
excel_start_date = datetime.date(1899, 12, 30)
df['fechas'] = df['fechas'] - excel_start_date
df.fechas = df.fechas.dt.days
print(df)
xlsx_writer = pandas.ExcelWriter(
'test.xlsx'
, engine='xlsxwriter'
)
df.to_excel(xlsx_writer, sheet_name='Sheet1', index=False)
wb = xlsx_writer.book
ws = xlsx_writer.sheets['Sheet1']
dollar_format = '_($* #,##0.00" "_);_($* (#,##0.0);_($* "-"??_);_(@_)'
dollar_format_wb = wb.add_format({'num_format': dollar_format, 'valign': 'vcenter'})
centre_format_wb = wb.add_format({'align': 'center', 'valign': 'vcenter'})
#additional format added below
centre_date_format_wb = wb.add_format({'align': 'center', 'valign': 'vcenter', 'num_format' : 'mm/dd/yyyy' })
ws.set_column('A:A', 25, centre_date_format_wb)
ws.set_column('B:B', 20, centre_format_wb)
ws.set_column('C:C', 15, centre_format_wb)
ws.set_column('D:D', 10, dollar_format_wb)
# The code below was included to generate the screenshot, but isn't
# strictly necessary for the MWE
shadedrow_format_wb = wb.add_format(
{
'bg_color': '#EEEEEE'
, 'left': 1
, 'left_color': '#FFFFFF'
}
)
for r in range(0, 2 + df.shape[0]):
ws.set_row(r + 1, 45)
print(r)
if r % 2 == 0:
# a kludge as we can't change cell range formats after the fact without re-entering cell contents
ws.conditional_format('A{:}:D{:}'.format(r, r), {'type': 'no_errors', 'format': shadedrow_format_wb})
print("\t", r)
xlsx_writer.save()
以及生成的工作表的图像:
关于python xlsxwriter 不会对齐日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47325204/
对于相同的输入,是否可以使用 XlsxWriter 使输出二进制文件相同? 我尝试将 created 属性更改为同一日期,这有点帮助。 sharedStrings.xml 中仍然存在很多差异。 谢谢
我正在尝试创建带有趋势线的条形图。我可以在 excel 中执行此操作,并希望使该过程自动化。 xlswriter 非常易于使用,我已经复制了条形图它只是趋势线对我不起作用。它似乎在行中添加了 2 个元
例如,我有 Jan、Feb 和 Mar 的 3 个数据元素(例如 49、23、40),它们都属于同一个系列 1。当我将它们绘制在条形图中时,它们只能是在 XlsxWriter 中用相同的颜色填充。我该
我试过在 MacOS 上安装 xlsxwriter 我试过: pip install xlsxwriter easy_install xlsxwriter python -m easy_install
我有一个来自 Pandas 数据框的 Excel 工作表。然后我使用 Xlsxwriter 添加公式、新列和格式。问题是我似乎只能格式化我使用 xlsxwriter 编写的内容,而不能格式化来自数据框
在 Python 包 xlsxwriter 中,是否可以将散点图系列的一部分格式化为与另一部分不同的格式?例如,一个散点图,其中特定系列的线的某些部分是蓝色的,而同一线的其他部分是红色的。通过修改特定
我通过调用创建了一个图表 worksheet.insert_chart(chart_row, chart, {'x_scale': 2, 'y_scale': 1}) 它是一种堆叠类型。 我想让图表水
我正在尝试让 xlsxwriter 将 =BDP 公式放入单元格中,但是当我尝试打开 excel 输出并且结果为 0.0 时会导致错误 有谁知道如何解决这一问题?谢谢! sheet.write_for
我编写了一个 python 代码来使用 xlsxwriter 从 csv 文件生成一个 excel 文件。 但输出不是我想要的。我的数据之间有空行: 我不知道是什么让我的代码发生这种情况。我想像这样删
我有一个创建 Excel 文件的 python 脚本。 定义 :Osisoft-function 是输入到 Excel 单元格以从 Osisoft 服务器获取数据的函数(在 Excel 中安装了 PI
我正在使用 pandas concat 将几个数据框(表格)合并到一个 excel 文档中。 我使用 Xlsxwriter 输出 excel。 我的问题是,在下面的代码中,我使用 worksheet.
我试图弄清楚如何让 XlsxWriter 循环遍历工作表并根据每个单元格值用特定图像添加/替换单元格值(例如,单元格值为 1 添加 pic1.jpg,单元格值为 2 添加 pic2.jpg,等等 我的
是否有任何选项可以使用 xlsxwriter 在 Excel 中添加粗边框? 我正在使用条件格式在范围之间编写边界。 在我的情况下,添加表不起作用。 最佳答案 Is there any option
使用 Xlsx 编写器,我想编写将遵守操作系统区域/语言设置设置的区域设置格式的日期。例如,加拿大的操作系统设置的默认格式是“yyyy-mm-dd”,而在德国,它是“dd.mm.yy”。如何使日期响应
我在这里看到很多页面都设置了整列宽度的格式,但是有没有办法设置单个单元格宽度的格式?我的问题是我正在创建一个或多或少具有“标题”的工作表,其中每列的长度不同,因为它们已被合并以包含唯一信息。此部分下方
我正在使用 xlsxwriter python 模块。 我正在尝试使用.write_formula()函数将公式写入单元格,检查不同工作表中单元格内容是否存在: worksheet.write_for
我是 Python 新手,我正在尝试使用这个简单的代码,一切正常,但序列不会重复。请帮助我。 this is the excel output import xlsxwriter workbook =
我想在 excel 中上传分组条形图,但我似乎找不到这样做的方法。 这是我的代码: bar_chart2 = workbook.add_chart({'type':'column'}) bar_cha
我正在尝试从文本文件收集数据。当我打印输出时,它们返回我正在寻找的正确值,但是,当我尝试使用 xlsxwriter 将这些输出放入表中时,该表仅包含 txt 文件最后一行的输出重复的数量文本文件中存在
有时我尝试保存 xlsx 工作簿,但文件已打开。我之前做了很多处理,所以如果像打开工作表这样简单的事情导致文件保存失败,我必须再次运行整个脚本。 想做这样的事情,但它似乎没有保存新文件,即使我关闭旧文
我是一名优秀的程序员,十分优秀!