2017-12-11 7 views
0

マイコード: 維持するフォーマットは、新しいブックを作成するとき

import os 
import glob 
import pandas as pd 


for csvfile in glob.glob(os.path.join('.', '*.csv')): 
    df = pd.read_csv(csvfile) 

col_test = df['Test #'].tolist() 
col_retest = df['Retest #'].tolist() 
data = pd.read_excel('PATH') 
start_row = 4 

for i, val in enumerate(col_y): 
    data.iloc[start_row + i, 21] = val 
    i += 1 

writer = pd.ExcelWriter('output_c.xlsx') 
data.to_excel(writer, 'NewSheet') 

は今のところ、これがロードされたワークシートに入力されたCSVデータでの新しいブックを作成します。

私は何をしたいことにあるいずれか、2つのうちのいずれかを行うことです。

  1. は、元のワークブックへの新しい.CSVデータでワークシートを保存します。

  2. または、すべてのワークシートを新しいブックとして保存できるように、元の書式でロードしたブックから読み込みます。これは、.csvデータの値がブール論理ステートメントで使用され、ワー​​クブックの別のワークシートに記入されるため重要です。

フォーマットを維持しながらこれを行うにはどうすればよいですか?

+0

ようこそ!あなたは誰かにあなたのためのコードを書くよう求めているようです。 Stack Overflowは、コード作成サービスではなく、Q&Aサイトです。効果的な質問を書く方法については、こちらをご覧ください(http://stackoverflow.com/help/how-to-ask)。 – Ivonet

答えて

-1

残念なことに、通常のツールでは、既存のExcelファイルの書式設定フォームを実際に変更または読み取ることができません。私はいくつかのソリューションを考えることができますが、どれもきれいではありません。

  1. はあなただけのpythonで.CSVを生成し、Excelに生データを貼り付けることができますので、あなたのExcelでフォーマットされたシートの全てが、フォーマットされていないデータと非表示のシートを参照するライブ式を提出してください。欠点は、これが完全に自動化されていないことです。

  2. ブックのすべてのシートを読み取り、追加してブックを再度保存することができます。欠点は、書式設定ではなく、データの読み込みのみです。 xlsxwriterパッケージを使用して書式をハードコードする必要がありますが、これは非常に面倒で柔軟性がありません。

  3. win32com apiを使用すると、プログラムでPythonを開いて操作することができます。基本的にはExcelブックでブックを開いて、そのパッケージ(VBAのように見える)のコマンドを使用してブックを変更します。これも面倒です。特に、pd.DataFrame.to_excelとは統合されていないため、データフレームを反復処理してデータをフィードする必要があります。一番簡単なのはおそらく、.csvを開いてブックに統合するためのVBAスクリプトを作成し、.csvを生成した後にPython内からそのスクリプトを呼び出すことです。

+0

openpyxlは既存のファイルを編集するのに使用でき、通常は既存のファイルを保存します。 –

0

Charlie Clarkが述べたように、OpenPyXLを使用してExcelファイルを読み書きすることができます。 Excelのドキュメントを読むために利用できるライブラリがいくつかありますが、ime openpyxlはパンダを使用する際に最も堅牢で簡単に作業できます。それはあなたのexcelファイルのフォーマットを保持します(そしてマクロも保存します)。

Workbook = openpyxl.load_workbook(filename, read_only=False) 
Sheet = Workbook.get_sheet_by_name(sheetname) 

をアウトバックファイルを保存する:ファイルを開くには

だけでやるあなたはopenpyxlを使用して、データまたはパンダのデータフレームとして働くことができる

Workbook.save(outputfilename) 

。新しい行/列を追加する場合は、それらをフォーマットする必要があります。 Excel内での編集のように、ファイルの残りの部分の書式設定を自動的に採用するだけではありません。Openpyxlはあなたの書式設定を行うにはstyles systemあり、またはあなたがこのようなもので、隣接するセルの書式設定をコピーすることができます。スタックオーバーフローへ

NewCell.number_format = OldCell.number_format 
NewCell.alignment = copy(OldCell.alignment) 
関連する問題