2016年2月14日日曜日

PythonでCSVデータをExcelに貼り付ける

やりたいこと

PythonでCSVデータをExcelに貼り付ける

動作環境

Windows7 Python3.4

こうしたい

 ,Label,Area,Mean,Min,Max
1,4mas.tif,40000,0.000,0,0
2,10mas.tif,40000,32757.335,30635,34880
3,25mas.tif,40000,32784.505,1039,64761
4,40mas.tif,40000,32836.377,1371,65157

こうした

import win32com.client as win32

f = open("C:/Users/user/Documents/sample.csv","r")

xlApp = win32.Dispatch("Excel.Application")
xlApp.Visible = 1
wb = xlApp.Workbooks.Open("C:/Users/user/Documents/sample.xls")
Sheet = xlApp.Workbooks(1).Sheets(1)
for i,line in enumerate(f.readlines()):
    for n,label in enumerate(line.split(",")):
        cell = Sheet.Cells(i+1,n+1)#cellの始まりが(1,1)でカウントアップの始まりが(0,0)のため
        cell.Value = label
enumerate関数はリストのインデックスをループします。 すごい便利ですね。

でもこんなのがあった

import pandas as pd

df = pd.read_csv("C:/Users/user/Documents/sample.csv", index_col=0)
df.to_excel("C:/Users/user/Documents/sample.xls",startrow=10,startcol = 10)
Pandasすごい。
たった2行で終わりです。
pandas.to_excelですがstarcol,startrowはセルの貼り付け開始位置です(そのまんま) 指定しなければ、Rangeでいうところの("A1")から貼り付け開始します

デフォルトでラベルの部分が勝手に装飾されてしまいますね...

やりたいこと

PythonでCSVデータをExcelに貼り付ける

動作環境

Windows7 Python3.4

こうしたい

 ,Label,Area,Mean,Min,Max
1,4mas.tif,40000,0.000,0,0
2,10mas.tif,40000,32757.335,30635,34880
3,25mas.tif,40000,32784.505,1039,64761
4,40mas.tif,40000,32836.377,1371,65157

こうした

import win32com.client as win32

f = open("C:/Users/user/Documents/sample.csv","r")

xlApp = win32.Dispatch("Excel.Application")
xlApp.Visible = 1
wb = xlApp.Workbooks.Open("C:/Users/user/Documents/sample.xls")
Sheet = xlApp.Workbooks(1).Sheets(1)
for i,line in enumerate(f.readlines()):
    for n,label in enumerate(line.split(",")):
        cell = Sheet.Cells(i+1,n+1)#cellの始まりが(1,1)でカウントアップの始まりが(0,0)のため
        cell.Value = label

enumerate関数はリストのインデックスをループします。 すごい便利ですね。

でもこんなのがあった

import pandas as pd

df = pd.read_csv("C:/Users/user/Documents/sample.csv", index_col=0)
df.to_excel("C:/Users/user/Documents/sample.xls",startrow=10,startcol = 10)

Pandasすごい。

たった2行で終わりです。

pandas.to_excelですがstarcol,startrowはセルの貼り付け開始位置です(そのまんま) 指定しなければ、Rangeでいうところの("A1")から貼り付け開始します

デフォルトでラベルの部分が勝手に装飾されてしまいますね...

一度書いたので忘れない

0 件のコメント:

コメントを投稿