在 Excel 文件中创建 sheet 表
对于 Excel 文件的操作少不了创建新的 sheet 表,本来 RPA 设计器是有创建sheet表
的组件的,似乎我发的帖子没啥用,请听我慢慢道来。
有一个需求是这样的,有 n 多个 Excel 文件(规则),根据他们对某一个 Excel 文件的一个 sheet 进行相关操作,生成的结果依次写到新建的 sheet 表中,需求做好后,客户很满意啊,然后客户问我,你新建的 sheet 表怎么是倒着的(最初的 sheet 表在最后,最近新建的 sheet 表在最前边)。
我的内心:因为艺赛旗设计器的工作表创建组件只能将 sheet 表放在某 sheet 表之前。
然后,我说:因为这样一打开就能看到最终结果,简单明了。
客户好像相信了,好吧,就这样吧。一世英名,差点儿毁于一旦。
一世英名,差点儿毁于一旦。所以下面的代码诞生了
import xlwings as xw
def creat_sheet(path, sheet=None, before=None, after=None):
"""
Creates a new Sheet and makes it the active sheet.
Parameters
----------
path : str
filename or fully qualified filename
sheet : str, default None
Name of the new sheet. If None, will default to Excel's default name.
before : str or int, default None
An object that specifies the sheet before which the new sheet is added.
after : str or int, default None
An object that specifies the sheet after which the new sheet is added.
Returns
-------
new sheet name
"""
try:
wb = xw.Book(path)
if before:
if isinstance(before, int):
before = before + 1
Sheet = xw.sheets.add(name=sheet, before=before)
else:
if isinstance(after, int):
after = after + 1
Sheet = xw.sheets.add(name=sheet, after=after)
wb.save()
return Sheet.name
except Exception as e:
raise e
多谢大佬指点
不错呦 66
多谢大佬指点 👍
或者可以这么做, 如果客户传入的 before 为 None, 则在末尾添加。 这样改动就不会新增参数了 ~~~
Hi.
[工作表创建] 组件, 如果是只填写新的表单名,会在序号第一的位置 新增表单,就像帖子里说的一样。(这个应该要改进下 ~~~ 😝)
excel 模式用的 python 模块是 xlwings,方法是:
wb.sheets.add(name=None, before=None, after=None)
, 如果客户只填写 name, 那么就在序号第一的位置 新增表单。帖子中完善的代码 有个问题: 如果客户只写 path 和 sheet,不写 before 和 after,那应该也是在序号第一的位置 新增表单。
所以,可以再改进下 ~ 如果可以不写 before 和 after,则在末尾添加新表单。 ⭐
啊!我觉得应该不是我
罪魁祸首是 工具人阿亮 ~~~
走起 ~
这里是段子手的集结地
不会开车的裁缝不是好厨师
主要是被你带偏了
优秀如你,不会写段子的程序猿不是好工程狮
哈哈 ~~ 没事走两步
段子手才是好手
感觉社区程序员发帖的画风有点往段子手的方向发展啊