python xlwings chart模塊各種問題今天都遇到了


問題1、增加圖表,按網上搜索的設置圖表標題一直報錯(pywintypes.com_error: (-2147352567, '發生意外。', (0, 'S', '該對象無標題。', None, 0, -2147024809), None)

問題2、標簽問題位置調整,標簽默認在圖表右側

問題3、遇到具體問題的處理方法,比如:msoElementChartTitleAboveChart 雙面 在圖表上方顯示標題。這個參數的枚舉值顯示為雙面,要換成具體的int型數字的方法。

 

下面列舉具體的問題原因及解決方法:

1 # generate chat
2         chart = sht.charts.add(500, 10)
3         chart.set_source_data(sht.range("B7:E8"))
4         chart.chart_type = 'pie_exploded'
5         chart.api[1].ChartTitle.Text = 'TestReport'  # change the title name

這部分代碼跟網上找到的都一樣,比如這個篇:https://blog.csdn.net/weixin_42146296/article/details/103647940,但很納悶運行這段代碼正常,運行我自己的就報錯,然后把生成的圖表手動去操作時發現標題選項未勾選,代碼默認生成的報告就不包含標題對象,此時再去看原來的報錯,已經明確提示了“該對象無標題”,如問題1中后面紅色字體加粗部分,只怪當時也看不懂這句什么意思,一步一步嘗試才發現這個坑

 

那接下來首選就是要讓這個標題通過代碼使能,並進行顯示出來,然后才能去改標題,使用excel的錄抽宏功能,就能很正常的知道使用api的哪個屬性了,錄制宏過程請看前一篇文章,此處跳過,直接列出宏

 

 修改代碼如下:

1 # generate chat
2         chart = sht.charts.add(500, 10)
3         chart.set_source_data(sht.range("B7:E8"))
4         chart.chart_type = 'pie_exploded'
5         chart.api[1].SetElement('msoElementChartTitleAboveChart')  # enable the title show up
6         chart.api[1].ChartTitle.Text = 'TestReport'  # change the title name

報錯如下:報錯的意思很明顯是整型的枚舉值

 return self._oleobj_.InvokeTypes(2502, LCID, 1, (24, 0), ((3, 1),),Element
ValueError: invalid literal for int() with base 10: 'msoElementChartTitleAboveChart'

  

 通過百度搜索關鍵字:msoElementChartTitleAboveChart,無語了微軟官網上也顯示有問題,竟然顯示“雙面”,這是什么意思,別急,繼續往下看,這個文檔錯誤還能把人憋死不成

 

 

繼續查看前面所錄制的宏,由於通過網頁查找到官網的也顯示有錯誤,只能再重新返回VBA去找辦法,光標放至msoElementChartTitleAboveChart並右鍵,選擇【快速信息】,顯示的值為2

 

所以重新修改代碼如下:

1 # generate chat
2         chart = sht.charts.add(500, 10)
3         chart.set_source_data(sht.range("B7:E8"))
4         chart.chart_type = 'pie_exploded'
5         chart.api[1].SetElement(2)  # enable the title show up
6         chart.api[1].ChartTitle.Text = 'TestReport'  # change the title name

生成的圖表如下:PERFECT

 

 

 

 下面列出幾個給我啟發的文檔,應該是幫了我很大的忙:

1、python操作xlwings在excel中制作圖

2、使用xlwings 的API接口屬性方法,官方文檔鏈接

3、SetElement對應的詳細枚舉值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM