• 締切済み

python Excelのシートのコピーについて

お世話になります。 pythonにてxlutilsを使用してExcelの操作を勉強しているのですが テンプレート(1)を読込、ファイル(2)の内容を読込ながら 新規ファイルを複数作成する処理にて困っております。 値のコピーは出来るのですが、テンプレート内に色や罫線・結合セルなどがあり これらを丸ごとコピーしたいのですが、どうすればよいでしょうか? 流れとしては、 (1)読込⇒シート丸ごとコピー⇒(2)読込⇒値設定⇒書出 だと思うのですが、そもそも書式(スタイル)のコピーはできますか? 環境はpython2.6.2 のwindowsです。

みんなの回答

回答No.1

xls形式(Excel2007のxlsxはXMLのzipなので別の話となります)において、 結論からすると、無理そうです。 もともと、xlutils は、 Excelファイルの「読み」専用のxlrdと、「書き」専用のxlwt を橋渡しする(たとえば、全値のコピーとか)ためのライブラリのようです。 xlutilsのほかに、pyExcelerator というライブラリもありますが、 これも同様で、読みと書きは別です。(このライブラリは、読むだけ、 書くだけならかなり使いやすいです。) どうしても、Pythonを使う場合、pywin32でWindowsのCOM経由で 操作するしかないような気がします。ただし、この方法は 実行速度に難ありです。 Pythonにこだわらなければ、VBScriptによるWSHとかのほうが現実的 かもしれません。 最近、Pythonを使った開発案件で、追加要件で激しくデコレーションした Excelのシートコピーを対応する必要があり、 VBScriptによるWSHを使って逃げたことがあります。

cocomonchi
質問者

お礼

やっぱりコピーは無理そうなんですね。。 pywin32も実行速度に難があるとなると・・・ pyExceleratorで罫線・結合などの設定ができたので テンプレート内容を手動で設定するしかなさそうですね。。。 pythonにこだわらず、別の言語での実現を検討してみます。 ご回答ありがとうございました。

関連するQ&A

  • Excelのコピーができません

    excelで作成したワークシートがあります。 ・セル結合 ・罫線、セルパターン等を使用しています。 ・セルには関数で計算した値があります。 これを別のワークシートに同じ形式で、関数を値にしたものを作りたいと思い、 ・まず、普通にコピ-&ペースト。これで罫線、セルパターン、列幅、セル結合などの書式がコピーされます。 ・しかし、セル値が関数のままなので ・同じ範囲に同じものを「値のみ」ペーストをしようとすると、「この操作には、同じサイズの結合セルが必要です。」と出てペーストできません。 結合セルを解除せずに、どうすればコピーできるか、どなたか教えて下さい。

  • エクセル、シートコピーで、数式・リンクを削除したい

    W98 エクセル2000です。複数のエクセル・ファイルで、資料を作成しています。 それらには、多数の関数や、シート参照があり、最終的に、ひとつのシートを印刷することで、完成した資料になっています。 その複数のファイルの中より、印刷用の完成シートのみを、ひとつのエクセルファイルにまとめ(シートは複数に分かれて可)、メールにて配布したいです。印刷設定などを含ませながら、かつ、数式だけを削除し、値のみを、コピーしたいのです。 普通に考えて、まず、シートをコピーし、罫線のみを残して、削除。その後、コピー元より、値のみをコピーしようとすると、”この操作には、同じセルの結合が必要です”と、拒否されます。 どのようにしましたら、数式やリンクを削除した別ファイルが、作成できますのでしょうか? お手数ですが、よろしくお願い申し上げます。

  • 保護されたエクセルシートのコピー

    エクセル97です。 書式→セル→表示しない を選択したセルのデータは、シートを保護するとセルをコピーして他のシートに貼り付けても、セル内の式はコピーされず、値だけになってしまうようです。 こんな場合でも中の式をコピーする方法はありますか?

  • 値のみ(関数と数式は結果)を別シートにコピー

    のやり方がわかりません。 たとえば、SHEET1の(1,1)のセルの値をSHEET2の(1,1)にそのままコピーしたい場合、SHEET2の(1,1)の数式にイコールを入れて、SHEET1の(1,1)を指定すれば良い、ということはわかります。 今回の質問は、 1、SHEET1に入力したものが、そのままそっくりすべてSHEET2にコピーされるには?という質問です。 これは可能なのでしょうか? SHEET1を変更すれば、SHEET2も同時に変更される、、そういったことをするにはどうしたらよいでしょうか。 2、実は今回、SHEET1を全て選択してコピーし、SHEET2に形式を選択して貼り付けして、値のみを選ぶと、罫線と、セルの書式設定、および列や行の高さが反映されませんでした。(本当に値のみのコピーなのですね。。) 私がしたいことは、数式、セルの書式設定、関数、についてはその「結果の値」をコピー、そしてできれば罫線や列、行の高さもコピーということです。 これがまさに今回質問したかったことです。 ややこしくて申し訳ありませんが、これ以上はムリだけどここまではできる、というような回答でもかまいませんのでどなたか助けていただけないでしょうか。

  • EXCEL 別シートのコピー(2)

    こんにちわ。 以前、マクロなどで、同じ名前のシートから別ブックの同じ名前のシートへ上書きはできるのでしょうか?という質問をさせていただき、教えていただいた方法でコピーをしてますが、値だけコピーすることはできるのでしょうか?(結合セルが結構あるので、難しいとおもいますが・・・。) と、いうのも数式のセルは、リンクがはられてしまうので困るのです。 教えてください。

  • Excelの条件付き書式のコピー

    Excel2007で条件付き書式でセルの色と罫線を設定しているセルがあります。 このセルをコピーして別シートに貼りつける際に、条件付き書式に合致して設定されている書式を条件なしで、そのままコピー出来ないでしょうか。 拙い説明で分かりにくいですが、イメージとしては計算式で数値が表示されているセルがある時に、計算式がいらない場合は、セルをコピーして値の貼付を行って数値だけを持っていくのと同じような事が条件付き書式でも出来ないか、と言う事です。

  • エクセルでコピーする時に

    シート1の内容をシート2にコピーしたいのですが。 値・フォント・フォントサイズ・フォントの色・太字・罫線・セルの塗りつぶしの色・図形が対象です。 シート1とシート2ではセルの大きさが若干違うのですが、それはそのままにしておきたいのですが。 全てを選択して普通にコピーすると、セルの大きさまでコピーされてしまいます。 また、値だけの貼付けだと、セルの大きさはそのままですが、コピーされないものが多々できてしまいます。 どうすれば、セルの大きさのみ除外してコピーできるでしょうか?

  • エクセルのコピーが出来ない

    エクセルで、あるファイルのシートをコピーして移動で別のシートに移動したいのですが、「セルの書式が多すぎるため、書式を追加できません」というメッセージがでてコピーできません。 対処方法を教えてください。

  • エクセル 他のファイル(ブック)へシートをコピー

    エクセル(2003)で他のファイル(ブック)にシートをコピーする場合,コピー元のシートに他のシートの値を参照するセルがあると,コピー後のシートに参照エラーが起きてしまいます. これを回避するため,コピー元のシートを全選択してコピーし,コピー先で「形式を選択して貼り付け→数値と数値の書式」をした後,再度コピー元のシート全選択コピーし,コピー先で「形式を選択して貼り付け→書式」とする,という方法で今は作業していますが,一発でできる方法はないでしょうか. もちろん,コピー先にコピー元の数式を反映させる必要はなく,値がコピーできればOKです,

  • EXCEL 追加したシートへのリンク

    BOOK1に他のエクセルファイルからシートを複数コピーして、そのコピーした各シートの値をBOOK1のシートAに関数で書き出したいのですが、可能でしょうか? 値貼り付けを複数回繰り返すのは面倒なので、VBAのWorkseets(1)みたいにファイルの一番左にあるシートのA1、というようなセル番地の指定が関数で出来たらと思っているのですが。