Excelのグラフを画像として保存

PythonExcelのグラフをJPG画像として保存するコード片。調べるのに苦労したので張っておく。一度クリップボードに貼って取得するのだと思ったら、直接画像に保存できた。Exportメソッドの第2引数を"GIF"などに変更すればGIFなどでも保存可能。

# coding: cp932
import win32com.client

def main():
  xls_fpath = ur'C:\temp\foo.xls'
  xls_fname = u'foo.xls'
  sheet_name = u'Sheet1'
  jpg_fpath = ur'C:\temp\bar.jpg'
  xlApp = win32com.client.Dispatch('Excel.Application')
  xlApp.Workbooks.Open(xls_fpath)
  xlSheet = xlApp.Workbooks(xls_fname).Sheets(sheet_name)
  chart = xlSheet.ChartObjects(1)
  chart.Chart.Export(jpg_fpath, "JPG")	
  xlApp.Workbooks(xls_fname).Close()

if __name__ == '__main__':
  main()	

補足として、IronPyhon + .NET Frameworkを使用して、.NETライブラリを使用する方法もできそうだが、やはりCPythonでできれば便利。もちろん、別途win32comモジュールをインストールする必要はある。そして、もちろんpy2exeなどでexe化してしまえば、Pythonやwin32comをインストールしていない環境でも使用可能。また、Excelファイル名やシート名に日本語も使用可能。