2017-08-28 168 views
0

私はMS Excelと対話するためにpython v3 xlwingsライブラリを使用しています。私はCSVファイルToCopy.csvを持っていて、このcvsファイルの内容全体をExcelファイルにコピーしたいと思います。csvの内容をコピーしてExcelシートに貼り付けるには?

import xlwings as xw 

Book_name = 'C:/Temp/ExcelBook.xlsm' 
sheet_name = 'SheetName' #paste into this sheet 

wb = xw.Book(Book_name) 
sht = wb.sheets[sheet_name] 

私はxlwingsのドキュメントを見たが始める方法についての損失にとどまっています。誰かが私に頭を打つことができますか?

私はxlwingsライブラリに基づいていない他の方法を使用しています。しかし、私のExcelファイルはパスワードで保護されており、xlwingsがパスワードで保護されたExcelファイルを処理できることはわかっています。他の方法についてはわかりません。

+0

おそらく見て、質問、チェック(https://stackoverflow.com/questions/17684610/python-convert-csv-to-xlsx)を複製しますこれが助けになるならば。 – ian0411

+0

@ ian0411、ありがとうございますが、このソリューションでは、パスワードで保護されたExcelファイルへの書き込みに問題がある「xlsxwriter」を使用しています。だから私は私の文脈でそれを使うことができない。好ましくは、私はxlwingsライブラリを使用する答えを探しています。 – user3848207

答えて

1

ので

読み取り/書き込み値

http://docs.xlwings.org/en/stable/quickstart.html

ドキュメントへ/からの範囲からのと同じくらい簡単です: 'フー1'、多くの便利な機能は、例えば、利用可能

>>> sht.range('A1').value = 'Foo 1' 
>>> sht.range('A1').value 

あります範囲が拡大:最初の例で

>>> sht.range('A1').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] 
>>> sht.range('A1').expand().value 
[['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] 

を、値が位置A1に書き込まれます。二、値で は

だからあなたはおそらく

for row,line in enumerate(inputcsv): 
    myrange = 'A'+row 
    mydata = line.split(',') 
    sht.range(myrange).value = mydata 

その他のオプションのような何かをしたいA1、B1、C1およびA2、B2、C2

を書かされています:

  1. Excelを意志csvを直接インポート - 手動でインポートする
  2. VBAマクロでインポートファイルをExcelに変換する xlwing経由でトリガー
+0

'inputcsv'はどうやって取得できますか?私がそこにこだわるまであなたのソリューションを実装しようとしました。 – user3848207

+0

私はinputcsvに便利なものを見つけました。 https://stackoverflow.com/questions/16139558/read-csv-then-enumerate – user3848207

1

あなたはxlsxwriterを試したことを書いているので、これはうまくいかないかもしれませんが、openpyxlを考えましたか?

from openpyxl import load_workbook 
from openpyxl.utils.dataframe import dataframe_to_rows 
import pandas as pd 

df = pd.read_csv('ToCopy.csv', header=None, index_col=None) 
wb = load_workbook(filename='C:/Temp/ExcelBook.xlsm') 
ws = wb.create_sheet() 
ws.title = 'ToCopy' 

for r in dataframe_to_rows(df, index=False, header=False): 
    ws.append(r) 

wb.save('C:/Temp/ExcelBook.xlsm') 
1

csvファイルを開き、直接XLSXとして保存するようにしてください:

import xlwings as xw 
wb = xw.Book('C:\source.csv') # Connect to an existing file 
# wb = xw.Book(r'C:\Users\hhsg\Desktop\target.xlsx') # On Windows: use raw strings to escape backslashes 
wb.save('C:\target.xlsx') 
# wb.save(r'C:\target.xlsx') # On Windows: use raw strings to escape backslashes 
関連する問題