# -*- 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':'百分比堆積條形棱錐圖'}