首页 > 编程问答 >使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?

使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?

时间:2024-07-22 13:14:06浏览次数:7  
标签:python excel pandas datepicker xlsxwriter

我正在尝试使用 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 之类的库添加的。

其他选择:

虽然无法直接嵌入日历控件,但可以考虑以下几种替代方案来改善用户体验:

  1. 数据验证: 正如所做的那样,使用数据验证可以限制用户在单元格中输入的内容,并提供弹出日历以供选择日期。这是最接近日期选择器功能的替代方案。

```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.", # 添加提示信息 }, ) ```

  1. 下拉列表: 可以创建一个包含有效日期的下拉列表。这可以让用户更容易地选择日期,而无需手动输入。

  2. ** VBA 宏:**如果需要更复杂的功能,可以考虑使用 VBA(Visual Basic for Applications)编写一个宏,在打开工作簿或单击某个按钮时插入日期选择器。然而,这需要用户启用宏,并且可能会带来安全风险。

请注意,使用 VBA 宏超出了 XlsxWriter 库本身的功能,需要更深入地了解 Excel 自动化和 VBA 编程。

标签:python,excel,pandas,datepicker,xlsxwriter
From: 78777026

相关文章

  • [1037] Python operation of three keys shortcut (pynput)
    Theshortcutof win+shift+leftdoesnotworkwellin pyautogui,butitworkswellin pynput.MovingtheActiveWindowtoaDifferentMonitor: You’reright;PyAutoGUIdoesn’tdirectlysupportmovingwindowsacrossmonitorswiththeeleganceofaswan......
  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......
  • 【校招+社招】华为OD机试 - 拼接URL(Java、JavaScript、Python、C、C++)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)算法概述URL拼接(URL拼接)是指将多个URL组件(方案、主机、端口、路径、查询参......
  • 使用 Google Colab 时,Python 包“datasets”从 virtualenv 目录“site-packages”中消
    我正在使用GoogleColab并尝试创建一个虚拟环境来工作。我的代码是:fromgoogle.colabimportdrivedrive.mount('/content/drive')!pipinstallvirtualenvmyenv_dir='/content/drive/MyDrive/virtual_env/'!virtualenv{myenv_dir}!chmod+x{myen......
  • Python 3 - openpyxl - 按名称迭代列
    使用openpyxl不按数字而是按列标题(ws第一行中的字符串值)迭代列的最简单方法是什么:如下所示:forcellinws.columns['revenue']:print(cell.value)不幸的是,openpyxl不直接支持像ws.columns['revenue']这样按列标题进行迭代。openpyxl......
  • Python selenium 网络抓取 recaptcha
    我想抓取一个网站,但在此之前有一个验证码,我什至使用api获取了数据,并且我还将其注入到网站中,因为网页没有提交按钮,我无法提交。流程是这样的,如果我解决同一网址中的验证码,隐藏的内容将被显示。但它并没有得到解决。我到处都找过了。我找不到解决方案。谁能帮我解决这个问题?......
  • Python 装饰器 详解+案例
    Python装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不改变原函数代码的情况下,对函数进行增加、修改或者扩展功能。装饰器的语法形式是在函数定义前使用@符号,并在@后面加上装饰器的名称。装饰器函数接受被装饰函数作为参数,并返回一个修改后的函数。impo......
  • 如何在 vercel 部署中路由 python 和 typescript 无服务器函数
    我从一个带有Next.js和Typescript前端以及python后端的全栈应用程序开始。由于我们想在vercel上部署,因此我们将所有后端功能迁移到/api文件夹中的typescript函数中,可通过以下方式访问:fetch('api/**foldername**)问题是我有一个简单的pytorch模型,因此......
  • 以块的形式处理大型 Spark DataFrame 的推荐方法是什么:“toPandas()”或“RDD.foreach
    我正在使用PySpark处理大型数据集,并且需要以每个500条记录的块的形式处理数据。我正在考虑使用toPandas()将我的SparkDataFrames转换为PandasDataFrames以方便分块或坚持使用SparkRDD,并使用foreachPartition()手动处理分块。以下是我正在考虑的示例方......
  • python中datetime模块
    datetime模块可以更方便的显示日期,并对日期进行计算。datetime模块中常用的类及其功能描述如下:datetime.datetime------>表示日期时间的类(常用)datetime.timedelta------>表示时间间隔的类(常用)datetime.date------>表示日期的类datetime.time------>表示时间的类datetime.......