python使用VBA:Excel創建圖表(轉)


# -*- coding: utf-8 -*-

"""

Created on Thu Mar 06 11:22:03 2014

@author: Administrator

"""

import win32com.client

from win32com.gen_py import msof,mspp,msxl

from string import uppercase

from pandas import Series

#%% 將常量發布到全局命名空間中去

g = globals()

for c in dir(msof.constants) : g[c] = getattr(msof.constants, c)

for c in dir(mspp.constants) : g[c] = getattr(mspp.constants, c)

for c in dir(msxl.constants) : g[c] = getattr(msxl.constants, c)

#%% 生成行名和坐標的對應關系表

luc = list(uppercase)

columns = Series((luc + [i+j for i in luc for j in luc])[:256],range(1,257))

def cellName(nRow,nCol):

return columns[nCol]+str(nRow)

#%% 打開一個測試文件

application = win32com.client.Dispatch('Excel.Application')

application.Visible = True

workbook = application.Workbooks.Open(r'c:\sample1.xls')

sheets = workbook.Sheets

sheet1 = sheets.Item(1)

#%% 獲取數據范圍

nRow = sheet1.UsedRange.Rows.Count

nCol = sheet1.UsedRange.Columns.Count

rangeName = cellName(1,1) + ':' + cellName(nRow,nCol)

rangeName

#%% 創建圖表

chart = workbook.Charts.Add()

chart.ChartType = xlLine

chart.SetSourceData(sheet1.Range(rangeName))

# 遍歷所有系列

seriesCollection = chart.SeriesCollection()

seriesCollection.Count

for i in seriesCollection:

print(i)

# 參考http://peltiertech.com/Excel/ChartsHowTo/QuickChartVBA.html

#%% 圖表類型說明

ChartType = {'xlLine':'折線圖',

'xlLineMarkersStacked':'堆積數據點折線圖',

'xlLineStacked':'堆積折線圖',

'xlPie':'餅圖',

'xlPieOfPie':'復合餅圖',

'xlPyramidBarStacked':'堆積條形棱錐圖',

'xlPyramidCol':'三維柱形棱錐圖',

'xlPyramidColClustered':'簇狀柱形棱錐圖',

'xlPyramidColStacked':'堆積柱形棱錐圖',

'xlPyramidColStacked100':'百分比堆積柱形棱錐圖',

'xlRadar':'雷達圖',

'xlRadarFilled':'填充雷達圖',

'xlRadarMarkers':'數據點雷達圖',

'xlStockHLC':'盤高-盤低-收盤圖',

'xlStockOHLC':'開盤-盤高-盤低-收盤圖',

'xlStockVHLC':'成交量-盤高-盤低-收盤圖',

'xlStockVOHLC':'成交量-開盤-盤高-盤低-收盤圖',

'xlSurface':'三維曲面圖',

'xlSurfaceTopView':'曲面圖(俯視圖)',

'xlSurfaceTopViewWireframe':'曲面圖(俯視框架圖)',

'xlSurfaceWireframe':'三維曲面圖(框架圖)',

'xlXYScatter':'散點圖',

'xlXYScatterLines':'折線散點圖',

'xlXYScatterLinesNoMarkers':'無數據點折線散點圖',

'xlXYScatterSmooth':'平滑線散點圖',

'xlXYScatterSmoothNoMarkers':'無數據點平滑線散點圖',

'xl3DArea':'三維面積圖',

'xl3DAreaStacked':'三維堆積面積圖',

'xl3DAreaStacked100':'百分比堆積面積圖',

'xl3DBarClustered':'三維簇狀條形圖',

'xl3DBarStacked':'三維堆積條形圖',

'xl3DBarStacked100':'三維百分比堆積條形圖',

'xl3DColumn':'三維柱形圖',

'xl3DColumnClustered':'三維簇狀柱形圖',

'xl3DColumnStacked':'三維堆積柱形圖',

'xl3DColumnStacked100':'三維百分比堆積柱形圖',

'xl3DLine':'三維折線圖',

'xl3DPie':'三維餅圖',

'xl3DPieExploded':'分離型三維餅圖',

'xlArea':'面積圖',

'xlAreaStacked':'堆積面積圖',

'xlAreaStacked100':'百分比堆積面積圖',

'xlBarClustered':'簇狀條形圖',

'xlBarOfPie':'復合條餅圖',

'xlBarStacked':'堆積條形圖',

'xlBarStacked100':'百分比堆積條形圖',

'xlBubble':'氣泡圖',

'xlBubble3DEffect':'三維氣泡圖',

'xlColumnClustered':'簇狀柱形圖',

'xlColumnStacked':'堆積柱形圖',

'xlColumnStacked100':'百分比堆積柱形圖',

'xlConeBarClustered':'簇狀條形圓錐圖',

'xlConeBarStacked':'堆積條形圓錐圖',

'xlConeBarStacked100':'百分比堆積條形圓錐圖',

'xlConeCol':'三維柱形圓錐圖',

'xlConeColClustered':'簇狀柱形圓錐圖',

'xlConeColStacked':'堆積柱形圓錐圖',

'xlConeColStacked100':'百分比堆積柱形圓錐圖',

'xlCylinderBarClustered':'簇狀條形圓柱圖',

'xlCylinderBarStacked':'堆積條形圓柱圖',

'xlCylinderBarStacked100':'百分比堆積條形圓柱圖',

'xlCylinderCol':'三維柱形圓柱圖',

'xlCylinderColClustered':'簇狀柱形圓錐圖',

'xlCylinderColStacked':'堆積柱形圓錐圖',

'xlCylinderColStacked100':'百分比堆積柱形圓柱圖',

'xlDoughnut':'圓環圖',

'xlDoughnutExploded':'分離型圓環圖',

'xlLineMarkers':'數據點折線圖',

'xlLineMarkersStacked100':'百分比堆積數據點折線圖',

'xlLineStacked100':'百分比堆積折線圖',

'xlPieExploded':'分離型餅圖',

'xlPyramidBarClustered':'簇狀條形棱錐圖',

'xlPyramidBarStacked100':'百分比堆積條形棱錐圖'}


免責聲明!

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



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