我正在尝试使用 Python XlsxWriter 生成的 Excel 创建输入表单。我想知道是否可以在 Excel 单元格中添加一个迷你日历(作为 DatePicker)供用户输入日期?
我偶然发现了 Microsoft 支持团队提供的本指南
插入日期选择器
:|| |https://support.microsoft.com/en-us/office/insert-a-date-picker-afa0aea0-d4e3-4424-8e0a-c08f65928f84
这看起来非常酷!但不幸的是,我在 XlsxWriter 文档中找不到任何类似的内容。
其他变体:
这是我当前的代码片段。我正在使用
强制用户在选定的单元格中按格式输入日期。我希望有一种方法可以将 DatePicker 组件插入 Excel 单元格。
data_validation
有人有使用迷你日历生成 Excel 的经验吗?
import pandas as pd
from datetime import date
input_table = pd.DataFrame([], columns=["Name", "Desc", "RegisterDate"])
with pd.ExcelWriter("input-form.xlsx", engine="xlsxwriter") as writer:
input_table.to_excel(writer, sheet_name="Input Table", index=False)
worksheet = writer.sheets["Input Table"]
worksheet.data_validation(
'C2:C100',
{
"validate": "date",
"criteria": "between",
"minimum": date(1, 1, 1),
"maximum": date(9999, 12, 31),
},
)
Does anyone have any experience with generating Excel with a mini calendar?
很遗憾,无法使用 XlsxWriter 直接将日历控件(日期选择器)插入 Excel 单元格中。XlsxWriter 是一个用于创建 Excel 文件的低级库,主要关注于写入数据、格式和图表,但不支持添加 ActiveX 控件或其他交互式元素(如日期选择器)的功能。
提供的 Microsoft 支持文档中的日期选择器是 Excel 应用程序本身的一个功能,而不是可以通过 XlsxWriter 之类的库添加的。
其他选择:
虽然无法直接嵌入日历控件,但可以考虑以下几种替代方案来改善用户体验:
- 数据验证: 正如所做的那样,使用数据验证可以限制用户在单元格中输入的内容,并提供弹出日历以供选择日期。这是最接近日期选择器功能的替代方案。
```python import pandas as pd from datetime import date
input_table = pd.DataFrame([], columns=["Name", "Desc", "RegisterDate"])
with pd.ExcelWriter("input-form.xlsx", engine="xlsxwriter") as writer: input_table.to_excel(writer, sheet_name="Input Table", index=False) worksheet = writer.sheets["Input Table"] worksheet.data_validation( 'C2:C100', { "validate": "date", "criteria": "between", "minimum": date(1, 1, 1), "maximum": date(9999, 12, 31), "input_title": "Select a Date", # 添加提示标题 "input_message": "Please select a date from the calendar.", # 添加提示信息 }, ) ```
-
下拉列表: 可以创建一个包含有效日期的下拉列表。这可以让用户更容易地选择日期,而无需手动输入。
-
** VBA 宏:**如果需要更复杂的功能,可以考虑使用 VBA(Visual Basic for Applications)编写一个宏,在打开工作簿或单击某个按钮时插入日期选择器。然而,这需要用户启用宏,并且可能会带来安全风险。
请注意,使用 VBA 宏超出了 XlsxWriter 库本身的功能,需要更深入地了解 Excel 自动化和 VBA 编程。
标签:python,excel,pandas,datepicker,xlsxwriter From: 78777026