1. 程式人生 > 程式設計 >python3.7 openpyxl 在excel單元格中寫入資料例項

python3.7 openpyxl 在excel單元格中寫入資料例項

本來我是想嘗試,選中某個多個單元格複製到同一個sheet的其他位置,找了很多資料沒有找到,目前只有這麼一個辦法,如果有大佬看到,歡迎補充請教。

# encoding:utf-8
import pandas as pd
import openpyxl
xl = pd.read_excel(r"E:\55\CRM經營分析表-10001741-1570416265044.xls")
xl.to_excel(r"E:\55\crms.xlsx")
wk = openpyxl.load_workbook(r"E:\55\crms.xlsx") #載入已經存在的excel
wk_name = wk.sheetnames
wk_sheet = wk[wk_name[0]]
 
wk_sheet.cell(row=2,column=2,value='大區') #在第二行,第二列下入“大區”數值
wk_sheet.cell(row=2,column=3,value='小區')
wk_sheet.cell(row=2,column=4,value='店鋪編碼')
wk_sheet.cell(row=2,column=5,value='店鋪名稱')
 
wk.save(r"E:\55\s.xlsx")

補充知識:【openpyxl】python中對Excel進行寫入操作,寫入一列或者一行(從excel中讀出label和feature對應格式方法以及插入一行或者一列方法實現)

前言

最近在做expansion of datset,所以需要把擴充套件的dataset寫入到excel中

我已經矩陣運算全部搞定,最終輸出的是兩個輸出 labels 和 features

自己整理為以下格式

label = [[0],[1],[2],[3]
     ]
feature = [
      [0.1,0.2,0.3,0.4,0.5],[0.11,0.21,0.31,0.41,0.51],[0.6,0.7,0.8,0.9,1.00],[1.1,1.2,1.3,1.4,1.5],]

解決方案

先是準備用python帶的xlrd xlrd 等包來操作感覺真的不太行

換思路,用第三方包openpyxl來操作

pip install openpyxl

官方文件在這裡

https://openpyxl.readthedocs.io/en/stable/index.html

程式碼

廢話不多說,show you my code

# coding=utf-8
from openpyxl import Workbook
import numpy as np

wb = Workbook()

ws = wb.create_sheet("che")
label = [[0],]
#這個地方之所以 變成numpy格式是因為在很多時候我們都是在numpy格式下計算的,模擬一下預處理
label = np.array(label)
feature = np.array(feature)

label_input = []
for l in range(len(label)):
  label_input.append(label[l][0])

ws.append(label_input)
for f in range(len(feature[0])):

  ws.append(feature[:,f].tolist())
wb.save("chehongshu.xlsx")

結果生成一個excel,最後結果如下圖:

python3.7 openpyxl 在excel單元格中寫入資料例項

總結

openpyxl包用起來是真的方便,對於寫入,只需要建立一個LIST進行append就好了,如果excel為空的那append就從第一行開始遞增操作,你也可以理解為一個ws.append()操作就相當於寫入一行,如果excel為有資料的時候,那寫入操作從沒有資料的那一行開始寫入;這裡也說一下本來想用Insert來著但是忽略了一個條件,就是insert有個前提條件就是For example to insert a row at 7 (before the existing row 7):,意思為插入之前你的資料的大小一定是比要插入的行數或者列數大的,也就是說插入只能插到裡面,不能在邊緣插。

插入核心參考程式碼

for col in range(len(label)):

  print col
  ws.insert_cols(col+1)

  for index,row in enumerate(ws.rows):
    #print row
    
     if index == 0:
      #row[col+1].value = label[col][0]
      print "label"
      print label[col]
    else:
      print "feature"
      print feature[col][index-1]
      #row[col+1].value = feature[col][index-1]

讀取程式碼

python3.7 openpyxl 在excel單元格中寫入資料例項

def create_data_expansion(path,sheet):
  data_init = pd.read_excel(path,sheet)
  # print data_init
  data_df = pd.DataFrame(data_init)
  print data_df
  data_df_transponse = data_df.T
  label_expansion = np.array(data_df_transponse.index)
  label_expansion_l = []
  for l in range(len(label_expansion)):
    label_expansion_l.append([l])
  feature_expansion = np.array(data_df_transponse)
  label_expansion = np.array(label_expansion_l)

  return label_expansion,feature_expansion

if __name__ == "__main__":
  path_name = "excel_demo.xlsx"
  sheet_name = "11"
  label,feature = create_data_expansion(path_name,sheet_name)
  print label
  print feature

結果:

python3.7 openpyxl 在excel單元格中寫入資料例項

以上這篇python3.7 openpyxl 在excel單元格中寫入資料例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。