ヘッダーでインポートしたWin32COMクライアントを介してリストをExcelにエクスポートしようとしています。私が作成したオブジェクトは以下のようにコード化されていますが、各値をスプレッドシートの独自の行にエクスポートすることができません。 (pythonをあきらめる以外に)良いポインタを得ることができれば、感謝します。
class XcelExport():
def Excel(self):
app = 'Excel'
xl = win32.gencache.EnsureDispatch('%s.Application' % app)
ss = xl.Workbooks.Open(r'C:\MyFile.xls')
sh = ss.ActiveSheet
xl.Visible = True
sleep(.1)
sh.Cells(1,1).Value = 'Export-to-%s : Items' % app
sleep(.1)
for i in EventTableRFT:
sh.Range("A").Value = i
sh.Cells(i+2,1).Value = "End of the List!"
xprt = XcelExport()
xprt.Excel()
あなたは私の答え/コメントを好きに思われたので、ここに適切な答えがあります:
Python Excel には、必要なものすべてが揃っています。より統合されたものを必要とするが制限されているように見える場合は、 IronSpread があります。 XLRDとXLWTは素晴らしいパッケージですが、*。xlsxファイルをサポートしていません。 IronSpreadはWindows専用で、'07バージョンと'10バージョンのExcelのみをサポートしています。それぞれに注意点があります。最後に、両方を使用できます(* .xlsxとして編集してから* .xlsとして保存します(大きな* .xlsファイルで速度の問題があった人がいましたが、私のスクリプトはそのようなものから200mbのテキストを1のように書いています)分。))。
ああ、そして私は間違いなくxlrd/xlwtのセルタイプなどを取得するなどの興味深い機能のドキュメントを読む(読み飛ばす)でしょう。それが短くて実験の学習曲線を節約できるという理由だけで、それはそれだけの価値があります。
Xlwtの非常に短い例:
import xlwt
from tempfile import TemporaryFile
book = xlwt.Workbook()
sheet1 = book.add_sheet('sheet1')
supersecretdata = [34,123,4,1234,12,34,12,41,234,123,4,123,1,45123,5,43,61,3,56]
for i,e in enumerate(supersecretdata):
sheet1.write(i,1,e)
name = "random.xls"
book.save(name)
book.save(TemporaryFile())
Xlrdの非常に短い例:
import xlrd
from xlrd import open_workbook
book = open_workbook('random.xls')
sheet1 = book.sheet_by_index(0)
data = []
for i in xrange(sheet1.nrows):
data.append(sheet1.cell(i,1).value)
範囲内のセル行番号が両方とも不足しているため、ループを繰り返すたびにセル行をインクリメントする必要があります。
sh.Range("A1").Offset(0,x).Value = i
この変更は機能するはずです。
class XcelExport():
def Excel(self):
app = 'Excel'
xl = win32.gencache.EnsureDispatch('%s.Application' % app)
ss = xl.Workbooks.Open(r'C:\MyFile.xls')
sh = ss.ActiveSheet
xl.Visible = True
sleep(.1)
sh.Cells(1,1).Value = 'Export-to-%s : Items' % app
sleep(.1)
x=0
for i in EventTableRFT:
sh.Range("A1").Offset(0,x).Value = i #You need to increment the cell row
x+=1
sh.Cells(i+2,1).Value = "End of the List!"
xprt = XcelExport()
xprt.Excel()