我目前正在Azure数据库中进行一个项目,我需要在Python中自动执行涉及Excel模板的任务。以前,在Windows环境中,我使用openpyxl进行基本的Excel操作,并使用来自win32com.client库的Dispatch进行更高级的任务,如复制图表工作表和调整链接。
现在,我正在过渡到Azure环境,并面临复制相同工作流的挑战。具体而言,我需要:
打开Excel模板文件。将数据写入特定工作表。根据依赖于计算和新添加数据的公式操作图表。我知道在openpyxl中使用data_only=True取决于文件的出处,它可能并不总是按预期工作。
有没有人遇到过类似的情况,或者对如何在Azure环境中解决这个问题有建议(下面的reset_charts_orig函数)?任何见解或替代库都将非常感谢。
def reset_charts_orig(orig,new):“:param orig:input path:param new:output path“path1 = os.path.abspath(orig)path2 = os.path.abspath(new)
xl = Dispatch("Excel.Application")
xl.Visible = False
wb1 = xl.Workbooks.Open(Filename=path1)
wb2 = xl.Workbooks.Open(Filename=path2)
ws1 = wb1.Worksheets('GrafikenJahre')
ws1.Copy(Before=wb2.Worksheets('GLM'))
wb2.ChangeLink(Name=path1, NewName=path2, Type=1)
wb2.Close(SaveChanges=True)
wb1.Close(SaveChanges=False)
xl.Quit()
字符串
1条答案
按热度按时间i5desfxk1#
在Azure中,Databricks群集使用
Linux
,因此您无法使用仅在Microsoft Windows中受支持的pywin32
,因为您只能从Windows访问Win32 API。有关详细信息,请参阅this。
所以你可以使用
openpyxl
来添加图表和操作。下面是添加图表的例子。Excel中的数据。
| 0 |名字|姓氏|性别|国家|年龄|日期|ID|
| --|--|--|--|--|--|--|--|
| 1 |杜尔塞|Abril|女性|美国| 32 |2017年10月15日星期一| 1562 |
| 2 |玛拉|桥本|女性|大不列颠| 25 |16/08/2016 - 08 - 08| 1582 |
| 3 |菲利普|Gent|男性|法国| 36 |2015年5月21日星期五| 2587 |
| 4 |凯萨琳|Hanner|女性|美国| 25 |2017年10月15日星期一| 3549 |
| 5 |沙蚕目|马格伍德|女性|美国| 58 |16/08/2016 - 08 - 08| 2468 |
| 6 |加斯顿|Brumm|男性|美国| 24 |2015年5月21日星期五| 2554 |
| 7 |埃塔|赫恩|女性|大不列颠| 56 |2017年10月15日星期一| 3598 |
| 8 |厄尔恩|Melgar|女性|美国| 27 |16/08/2016 - 08 - 08| 2456 |
| 9 |利什琴扎|Weiland|女性|美国| 40 |2015年5月21日星期五| 6548 |
代码:
字符串
在这里,请确保在阅读文件时根据dbfs文件系统给出路径。但是由于本地API支持的限制,保存
workbook.save('/dbfs/')
无法工作。因此,保存它临时保存在本地文件系统中,并使用dbutils.fs.cp
将其复制到dbfs或挂载的存储帐户。有关此方面的详细信息,请参阅this解决方案。输出量:
x1c 0d1x的数据