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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

3回答

2996閲覧

PythonでExcelにセルを挿入したい

yuka-co

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

1クリップ

投稿2018/02/27 07:32

###やりたいこと
Pythonでウェブサイトのスクレイピングを行い、OpenpyxlでExcelを開き、結果を書き込みたいと考えています。
1週間ごとにプログラムを作動させ、情報を集積したいです。

###問題点
Excelに書き込む際に、シートの末尾に書き込むのではなく、シートの上部に挿入する形で取得したデータを書き込みたいのですが、挿入するような方法が調べても見当たらない状況です。
Openpyxl以外のライブラリでも構いませんので、良い方法がありましたらご教示ください。

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

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

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

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

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

guest

回答3

0

Openpyxl ver2.5.0から追加になった模様です。
http://openpyxl.readthedocs.io/en/stable/search.html?q=insert+rows&check_keywords=yes&area=default

sheet.insert_rows(2) #2行目に行挿入
で可能です。

以前同じ問題にぶち当たり、手前味噌ですがQiitaのリンクも置いておきます。

python3 openpyxl でエクセルに行挿入する

https://qiita.com/gameover/items/13868ca9101348bdf4fc

投稿2018/05/23 07:19

taharasan

総合スコア55

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

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

yuka-co

2018/05/23 13:06

かなり前の質問になりますが、わざわざご回答いただきありがとうございます! リンクも拝見します。
guest

0

ベストアンサー

ちょっと調べてみましたがopenpyxlにはセルや行を挿入するメソッドはないようです。
自力でループを回して頑張ってセル値を下にずらせばできそうですが面倒です。

ということでpywin32を紹介しておきます。
COM経由でExcelを操作する手法なので、Excelマクロと同じ感覚で利用できます。
当然ですが、Excelがインストールされている必要があります。
参考:pywin32からCOMを使ってExcelを操作する方法

Python

1import win32com.client 2app = win32com.client.Dispatch("Excel.Application") 3wb = app.Workbooks.Open('test.xlsx') 4sheet = wb.Worksheets('Sheet1') 5sheet.Range('2:2').Insert() # 2行目に行を挿入 6wb.Save() 7wb.Close() 8app.Quit()

ただPythonでExcel作業を自動化: Excelファイルのクローズ問題に紹介されているとおり、エラー発生時にEXCEL.EXEプロセスが残りがちなのが気になるところです。

目的次第ですが、個人的には、新たに処理日時+連番 列を用意しopenpyxlで末尾に追加。
必要な時だけExcel上の手作業([データ]→[並び替え])で並び替えする手段で我慢しときます。

投稿2018/02/28 04:16

編集2018/02/28 07:50
can110

総合スコア38258

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

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

yuka-co

2018/02/28 05:59

ありがとうございます!こういったライブラリもあるんですね。 Excel上での並び替えも併せて検討してみます。
guest

0

ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
ってコード例がありました。

行の挿入について調べたら、
openpyxl.worksheet.table にそれっぽい事が書いてありますけど、
tableで表状データをワークシート上に展開するときのオプションなのかなぁ。
VBAのように任意の行や列の挿入に対応するようには読めませんでした。

投稿2018/02/27 08:05

編集2018/02/28 01:18
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yuka-co

2018/02/28 00:54

ご回答ありがとうございます。 申し訳ありません、少し言葉が足りませんでした。 恐らくシートを挿入するコードをご教示いただいたかと思うのですが、 シート内にセルを挿入する方法をお聞きしたい状況です。 お答えいただいたのに申し訳ありません。
yuka-co

2018/02/28 02:53

ありがとうございます。公式ドキュメントで調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問