2016-06-17 10 views
1

申し訳ありません私は以前に尋ねられたかもしれない質問をしますが、私は本当にGoogleとスタックオーバーフローのフォーラムで答えを見つけることができませんでした。Excelアプリケーションを開いたときにPythonがxlsxファイルを変更する方法は?

質問は、ファイルで動作する最も便利なライブラリであるので、openpyxlの使用法と接続されています。

import openpyxl 

    wb = openpyxl.load_workbook("D:/Python.xlsx") 
    sheet = wb.active 

    i = 0 

    sheet["A1"] = i 

    wb.save("D:/Python.xlsx") 

ただし、開いているExcelファイルでは機能しません。私はまた、同様の質問を発見したエラー

[Errno 13] Permission denied: 'D:/Python.xlsx' 

を得る:

PermissionError [errno 13] when running openpyxl python script in Komodo

write to an open exceldocument

私はこのエラーを解決し、Excelで開いているファイルをPythonの仕事をするために何ができますか?私の現在のバージョンはPython 2.7です。また、可能であれば、xlsmファイルに同じ魔法を作る解決策はありますか?

UPD:

最初の質問のためのソリューションが存在しない場合は(たぶんGoogleドキュメントを除いては、@Alexのおかげで)、それは次のアルゴリズムをするコードを記述することが可能である実行します。 1.閉じるAN Excelアプリケーションと保存 2.スタッフをPythonで実行し、結果をExcelの目的地に保存します 3. ExcelアプリケーションでExcelファイルを開きますか?

私は方法を知っています2. 1と3の考えは?

UPD2:

xlwingsは本当に素晴らしい仕事をしていません!ちょうど私が必要なもの!ありがとう!

私は(ちょうど、他のユーザーがGoogleで検索して使用することができます)私のために働いたコードを提供したい:

import xlwings as xl 
    import time 

    wb = xl.Workbook.active() 
    sheet = wb.active 

    iter = 10 
    i = 0 

    while True: 
    i += 1 
    if i <= iter: 
    xl.Range("A1").value = i 
    time.sleep(1) 
    print(i) 
    else: 
    break 

    wb.save() 
    print("Done!") 
+0

Windowsがファイルにロックを適用している場合、これについては何もできません(これはWindows固有の問題です)。ファイルのコピーを使用する必要があります。 –

答えて

2

OpenPyXLは、ファイル上で直接動作します。 Excelプログラムとは何の関係もなく、Excelプログラムを制御することはできません。そのため、変更しようとしているファイルがExcelによってロックされている場合、OpenPyXLがそのことについて何もできません。

この質問にはというタグが付けられています。これは確かにExcelプログラムを制御するための適切な方法の1つです(Excelで開いている間、またはExcelを閉じるときにデータを変更できます)。あなたがPythonを使ってExcelへのインタフェースをしたいのであれば、最近のパッケージはxlwingsです。

+0

KUDOS !!!それは助けになった!どうもありがとう!世俗的に! – Alex

関連する問題