質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1726閲覧

pywin32を使って、csv(貼り付けたい中身も指定しながら)を特定のexcelの最終行の次の行に貼り付けたい。

nishimon

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/19 05:05

まず

import openpyxl
import pandas as pd
import glob
import os
#入出力のファイル先と読み込み先

出力先

export_file_path = r'~~\~~'
#くっつけたいcsvのあるフォルダとパス
import_folder_path = r'c:~~\~~~\読み込み先のフォルダ名'
path = import_folder_path + '/' +'*.csv'
file_path = glob.glob(path)

ファイルcsvを読み込む 型を調べて変えること

for i in file_path:
df_read_excel = pd.read_csv(i, encoding='',index_col=1)

これで貼り付けたいcsvの中身は選べました。
その後、パスワード付きのエクセルに貼り付けるために次のコードを書きました。

エクセルを起動するためのもの

excel = win32com.client.Dispatch("Excel.Application")
#開きたいエクセルとパスワード
excelfile = str(Path(r'~~\~~\~~\~~.xlsx').resolve())
wb = excel.Workbooks.Open(excelfile, Password='~~~~')

保存

wb.SaveAs(r'C:~~\~~\~~\~~\~~あ.xlsx', None, '')

xl = pd.ExcelFile(r'C:~~\~~\~~\~~あ.xlsx')

df = xl.parse(xl_sheet_name[1], encoding='')

閉じる

wb.Close()
excel.Quit()

その次に最終行を取得する方法(下記コード)は分かったのですが、
xlUp = -4162
lastrow = sheet.Cells(sheet.Rows.Count, 8).End(xlUp).Row

vbaのように特定の行に追加をするには
sheet.Range(“A1”).Value = “入力する値”
のようなコードをどう加工すれば、最終行の次の行に指定して貼り付け

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yag1kaz

2021/03/01 00:58

バッククォート3個で囲うことで、コードであることを明示しつつ、インデントを保持できます。 pythonはインデントを保持することが重要なのでこの書き方をお勧めします。 おそらくpythonコードをべた張りしているので、pythonのコメント部分である、#がマークダウン表記法における見出し項目になってしまっているものと思われます。 openpyxlはクロスプラットホーム的にはよいのですが、単なるワークシート以外のものを含むエクセルに対しては非常に相性がわるい(グラフやチャート)ので、pywin32のほうが安全かもしれません。
guest

回答2

0

ベストアンサー

貼り付けたいRowとcolがわかっているのでしたら、

python

1import pandas as pd 2df = pd.read_csv("C:/Users/foo/read.csv", index_col=0) 3df.to_excel("C:/Users/foo/write_to.xlsx",sheet_name='Sheet1', startrow=0, startcol=0)

としみては?startrow=0, startcol=0は適宜調整(蛇足)

pandas.DataFrame.to_excel

投稿2021/03/01 01:12

yag1kaz

総合スコア253

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishimon

2021/03/01 06:46

回答ありがとうございます。 pywinとpandas両方使って書いてみます。
guest

0

以下で次の行のA列に値vを設定できます。

sheet.cell(row=lastrow+1, column=1, value=v)

範囲を指定して貼り付けることはできないので、縦横の二重ループで回して一個づつ値を入れていってください。

投稿2021/02/19 06:26

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishimon

2021/03/01 06:40

回答ありがとうございます。 やってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問