首页 新闻 会员 周边 捐助

python 输出excel

0
[已解决问题] 解决于 2023-07-15 10:41

xlwings怎么能让数据插入到一个单元格的斜边两侧

这是我做到的效果

这是预期的效果

问题补充:

有没有小哥哥小姐姐能给下建议嘛,球球啦

等月亮爬上坡的主页 等月亮爬上坡 | 初学一级 | 园豆:12
提问于:2023-07-07 09:22
< >
分享
最佳答案
0

使用 xlwings 库在 Python 中操作 Excel,您可以通过设置单元格的旋转角度来实现数据在一个单元格的斜边两侧的插入。以下是一个示例代码:

python
Copy code
import xlwings as xw

打开 Excel 应用程序

app = xw.App(visible=True)

打开工作簿

workbook = app.books.open('your_workbook.xlsx')

获取工作表

worksheet = workbook.sheets['Sheet1']

在指定单元格插入数据

cell = worksheet.range('A1')
cell.value = 'Data'

设置单元格的旋转角度

cell.api.Orientation = 45

保存并关闭工作簿

workbook.save()
workbook.close()

关闭 Excel 应用程序

app.quit()
在上述示例中,我们使用 xlwings 打开 Excel 应用程序并打开工作簿。然后,我们选择要插入数据的单元格(在此示例中为 A1),将数据写入单元格,并设置单元格的旋转角度为 45 度。最后,我们保存并关闭工作簿,并关闭 Excel 应用程序。

请注意,这只是一个基本示例,您可以根据需要进行适当的调整。确保您已经正确安装了 xlwings 库,并且根据您的实际需求修改代码中的文件路径、工作表名称和单元格范围等。

希望这可以帮助到您,如果您有任何进一步的问题,请随时提问。

奖励园豆:5
Technologyforgood | 大侠五级 |园豆:7535 | 2023-07-07 22:31

试过啦,不过在一个单元格内只支持往一个角度倾斜。而我要得效果是左上角和右下角都有输出,试了试,怎么都达不到我的效果。虽然不行,但还是谢谢你的建议,爱你哟

等月亮爬上坡 | 园豆:12 (初学一级) | 2023-07-12 11:20

@等月亮爬上坡: 可以用三行一列的单元格,通过调整他们的长宽尺寸,来达到你的效果

Technologyforgood | 园豆:7535 (大侠五级) | 2023-07-12 22:33

@Technologyforgood: 不好意思,昨天忙其他去了。没来的及回复。这样子做虽然能达到目的,但对于输出的整个excel表格,排版就不够好看了。我想达到这个效果,就是为了让排版好看一点。

等月亮爬上坡 | 园豆:12 (初学一级) | 2023-07-14 09:53

@等月亮爬上坡: 我不知道可不可行,也许可以录制宏,在VBA里找到对应代码,然后进行修改达到里的效果。最后再用python调用呢?

Technologyforgood | 园豆:7535 (大侠五级) | 2023-07-15 07:18

@Technologyforgood: 谢谢大哥。我已经做到我想要的效果啦。一开始是用你的这个方法。不过我发现excel的代码我看不懂。这就很尴尬了。不过我受到了启发,直接在Excel上做到了我想要的效果,然后查看当前单元格的格式。用Python编写。至于单元格内容,因为有空格,为了保证效果,我直接从Excel复制
最后运行代码,已经能达到我想要的,目的了

等月亮爬上坡 | 园豆:12 (初学一级) | 2023-07-15 10:40
其他回答(1)
0

你可以使用xlwings的range方法来实现。首先,你需要获取单元格的左上角和右下角的坐标,然后使用xlwings的range方法来选定这个区域。
例如 如果你要选定单元格A1到B2,代码:
import xlwings as xw

app = xw.App(visible=False, add_book=False)
wb = app.books.open('test.xlsx')
sheet = wb.sheets['Sheet1']

left_top = sheet.range('A1').left, sheet.range('A1').top
right_bottom = sheet.range('B2').left + sheet.range('B2').width, sheet.range('B2').top + sheet.range('B2').height

range = sheet.range(left_top, right_bottom)

range.value = 'Hello World!'

长别 | 园豆:427 (菜鸟二级) | 2023-07-07 11:08

大佬,我尝试这样去弄。结果报错:Attempted to access 0-based Range. xlwings/Excel Ranges are 1-based

怎么修都不对

支持(0) 反对(0) 等月亮爬上坡 | 园豆:12 (初学一级) | 2023-07-07 15:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册