2016-10-03 50 views
1

pythonを使用していくつかのタスクを自動化し、最終的に既存のスプレッドシートに書き込む。 xlwt、xlrd、およびxlutilsモジュールを使用しています。既存のExcelシートにPythonを書く(xlwt)。チャートと書式を削除する

私はそれを設定する方法は、ファイルを開いて、コピーを作成し、それに書き込んだ後に同じファイルに保存することです。最後のステップを実行すると、コメントやチャートなどのすべての優れた書式設定が削除されます。その周りに道がありますか?私はそれが優れた物と何か関係があると思う。

import xlwt 
import os 
import xlrd, xlutils 
from xlrd import open_workbook 
from xlutils.copy import copy 

style1 = xlwt.easyxf('font: name Calibri, color-index black, bold off; alignment : horizontal center', num_format_str ='###0') 

script_dir = os.path.dirname('_file_') 
Scn1 = os.path.join(script_dir, "\sample\Outlet.OUT") 

WSM_1V = [] 
infile = open (Scn1, "r") 
for line in infile.readlines(): 
WSM_1V.append(line [-10:-1]) 
infile.close() 

Existing_xls = xlrd.open_workbook(r'\test\test2.xls', formatting_info=True, on_demand=True) 
wb = xlutils.copy.copy(Existing_xls) 
ws = wb.get_sheet(10) 

for i,e in enumerate(WSM_1V,1): 
    ws.write (i,0, float(e),style1) 


wb.save('test2.xls') 
+0

あなたのコードを表示することをお勧めします。 –

+0

http://stackoverflow.com/questions/3723793/preserving-styles-using-pythons-xlrd-xlwt-and-xlutils-copy –

+0

@TimWilliams:この場合、答えは難しくありません。コードはほとんど完全に無関係です。あなたが関係するパッケージを知っているなら、OPが求めているものは、単にそれらのパッケージでサポートされていないことを知っています。 –

答えて

0

あなたはwin32comでこれを行うことができます

サンプルコードありがとう?

from win32com import client 

... 

xl = client.Dispatch("Excel.Application") 
wb = xl.Workbooks.Open(r'\test\test2.xls') 
ws = wb.Worksheets[10] 

for i,e in enumerate(WSM_1V,1): 
    ws.Cells[i][0].Value = float(e) 


wb.save 
wb.Close() 
xl.Quit() 
xl = None 
1

これらのパッケージを使用すると、コメントやグラフなどの多くのブックの機能が失われることはありません。 xlrdパッケージは単にそれらを読み取ることはなく、xlwtパッケージは単にそれらを書きません。 xlutilsは他の2つのパッケージ間のブリッジに過ぎません。 xlrdが読むことができないものを読み取ることはできず、xlwtが書き込めないものは書き込めません。

達成したいことを達成するには、Excelの実行中のインスタンスを自動化することをお勧めします。そのための最良のPythonパッケージはxlwingsであり、WindowsまたはMac上で動作します。

+0

あなたの洞察をお寄せいただきありがとうございます、それは私が疑ったものですが、わかりませんでした。 xlwingsを試してみましょう。 – HAMIN

関連する問題