當前位置:首頁 » 編程語言 » 從excel到python

從excel到python

發布時間: 2022-11-06 19:40:16

1. excel中想實現使用python代替VBA,請問應該怎麼做

1、首先需要打開excel軟體,然後利用xlwings替代VBA寫宏。

2. 一個Excel表格(53×56)全是數字構成,如何將其作為一個矩陣導入到Python中

還是先把Excel中的輸入讀取到程序,讀到程序中了,你想幹嘛就幹嘛
前言

在很多應用場景中,程序都需要讀取excel的配置。
比如,在游戲中,數值策劃用excel 建好了數值表,我們要導入到游戲中。

概述
這里我使用了 pyexcel-xls 這個東西。我個人覺得這個東西導出的數據結構,結構可讀性很強,數據結構如下:
整個excel文件,轉化為一個字典結構:每個key就是一個子表(Sheet)
每個子表(Sheet),轉化為一個二維數組:分別為行和列。

注意,本文對應的版本更新為 pyexcel-xls 0.2.3。

安裝

pypi

■ 方法一:
可以直接用pip安裝

pip install pyexcel-xls

■ 方法二:

下載安裝包手動安裝。
先安裝兩個依賴包:
xlrd 和 pyexcel-io

然後再安裝 pyexcel-xls

使用
一、讀excel數據 (xls, xlsx)

1,先建立一個目標excel表,這里為了做演示,簡單建立一個 read_test.xlsx 文件:
裡面的數據(3行,4列):

2,寫python 腳本,讀這個文件:

[python] view plain
#! /usr/bin/env python
#coding=utf-8

# pyexcel_xls 以 OrderedDict 結構處理數據
from collections import OrderedDict

from pyexcel_xls import get_data
from pyexcel_xls import save_data

def read_xls_file():
xls_data = get_data(r"D:\read_test.xlsx")
print "Get data type:", type(xls_data)
for sheet_n in xls_data.keys():
print sheet_n, ":", xls_data[sheet_n]

if __name__ == '__main__':
read_xls_file()

看一下輸出的列印信息:

可以看到:
整個excel文件,轉化為一個OrderedDict (有序字典)結構:每個key就是一個子表(Sheet)。
每個子表(Sheet),轉化為一個列表結構:很像二維數組,第一層列表為行(Row),行的下標為列(Column),對應的值為單元格的值。編碼為 unicode
簡單,易用,讀出數據後,非常適合做二次處理!
■ 注意,excel文件名(就是那個xls或者xlsx文件),盡量不要用中文,如果您要使用中文,請轉化為unicode編碼,如:
xls_data = get_data(unicode(r"D:\試試.xlsx", "utf-8"))

二、寫excel數據 (xls)
根據上文,寫也比較簡單,不做過多解釋。
[python] view plain
#! /usr/bin/env python
#coding=utf-8

# pyexcel_xls 以 OrderedDict 結構處理數據
from collections import OrderedDict

from pyexcel_xls import get_data
from pyexcel_xls import save_data

def read_xls_file():
xls_data = get_data(unicode(r"D:\試試.xlsx", "utf-8"))
print "Get data type:", type(xls_data)
for sheet_n in xls_data.keys():
print sheet_n, ":", xls_data[sheet_n]
return xls_data

# 寫Excel數據, xls格式
def save_xls_file():
data = OrderedDict()
# sheet表的數據
sheet_1 = []
row_1_data = [u"ID", u"昵稱", u"等級"] # 每一行的數據
row_2_data = [4, 5, 6]
# 逐條添加數據
sheet_1.append(row_1_data)
sheet_1.append(row_2_data)
# 添加sheet表
data.update({u"這是XX表": sheet_1})

# 保存成xls文件
save_data("D:\write_test.xls", data)

if __name__ == '__main__':
save_xls_file()

看一下寫出的xls文件:

好,數據讀寫完成!

3. Python處理Excel效率高十倍(下篇)通篇硬幹貨,再也不用加班啦

《用Python處理Excel表格》下篇來啦!

身為工作黨或學生黨的你,平日里肯定少不了與Excel表格打交道的機會。當你用Excel處理較多數據時,還在使用最原始的人工操作嗎?現在教你如何用Python處理Excel,從此處理表格再也不加班,時間縮短數十倍!

上篇我們進行了一些事前准備,目的是用Python提取Excel表中的數據。而這一篇便是在獲取數據的基礎上,對Excel表格的實操處理。

第9行代碼用來指定創建的excel的活動表的名字:
·不寫第9行,默認創建sheet
·寫了第9行,創建指定名字的sheet表

第9行代碼,通過給單元格重新賦值,來修改單元格的值
第9行代碼的另一種寫法sheet['B1'].value = 'age'
第10行代碼,保存時如果使用原來的(第7行)名字,就直接保存;如果使用了別的名字,就會另存為一個新文件

插入有效數據
使用append()方法,在原來數據的後面,按行插入數據

·insert_rows(idx=數字編號, amount=要插入的行數),插入的行數是在idx行數的下方插入
·insert_cols(idx=數字編號, amount=要插入的列數),插入的位置是在idx列數的左側插入

·delete_rows(idx=數字編號, amount=要刪除的行數)
·delete_cols(idx=數字編號, amount=要刪除的列數)

move_range(「數據區域」,rows=,cols=):正整數為向下或向右、負整數為向左或向上

舉個例子:

openpyxl.styles.Font(name=字體名稱,size=字體大小,bold=是否加粗,italic=是否斜體,color=字體顏色)
其中,字體顏色中的color是RGB的16進製表示

再者,可以使用for循環,修改多行多列的數據,在這里介紹了獲取的方法

Alignment(horizontal=水平對齊模式,vertical=垂直對齊模式,text_rotation=旋轉角度,wrap_text=是否自動換行)
水平對齊:『distributed』,『justify』,『center』,『left』, 『centerContinuous』,'right,『general』
垂直對齊:『bottom』,『distributed』,『justify』,『center』,『top』

當然,你仍舊可以調用for循環來實現對多行多列的操作

設置行列的寬高:
·row_dimensions[行編號].height = 行高
·column_dimensions[列編號].width = 列寬

合並單元格有下面兩種方法,需要注意的是,如果要合並的格子中有數據,即便python沒有報錯,Excel打開的時候也會報錯。
merge_cells(待合並的格子編號)
merge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)

拆分單元格的方法同上
unmerge_cells(待合並的格子編號)
unmerge_cells(start_row=起始行號,start_column=起始列號,end_row=結束行號,end_column=結束列號)

create_sheet(「新的sheet名」):創建一個新的sheet表

第11行,使用title修改sheet表的名字

remove(「sheet名」):刪除某個sheet表
要刪除某sheet表,需要激活這個sheet表,即:將其作為活動表(關於活動表的定義請看前面文章開頭寫的有)下面8~11行代碼展示了原始活動表與手動更換活動表,第13行代碼刪掉活動表

背景知識
numpy與pandas
NumPy是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫;pandas 是基於NumPy 的一種工具,該工具是為解決數據分析任務而創建的,我們需要利用Pandas進行Excel的合並

1.下面的代碼生成了一個5行3列的包含15個字元的嵌套列表
(注意,第4行代碼:15是等於35的,如果是15對應43,或者16對應5*3都會報錯)
(注意,第5行代碼,雖然5行3列是15個數據,但是可以指定數據從1開頭,到16結束)

2.添加表頭
使用pandas庫的DataFrame來添加表頭。關於列印的結果,把最左側的一列去掉之後會發現結果很和諧,這是因為最左側的一列代錶行號。此時xx變數的類型是

xlsxwriter模塊一般是和xlrd模塊搭配使用的,
xlsxwriter:負責寫入數據,
xlrd:負責讀取數據。

1.創建一個工作簿

2.創建sheet表

3.寫入數據

4. 如何將excel導入python

將txt
文件導入python代碼:
import
pandas
as
pd
path='1.txt'
data=pd.read_csv(path,sep='\t')
想要」優雅「導入,建議使用pandas,matplotlib:
import
pandas
as
pd
data
=
pd.read_csv("aaa.csv")
data.columns
#查看錶格有哪些列,可以看到有x,
y,
z列
data['x']
#查看x列
data['y']
#查看y列
data['z']
#查看z列
import
matplotlib.pyplot
as
plt
plt.bar(data['x'],
data['y'])
#畫柱狀圖
plt.title('example')
#設置標題
plt.xlabel('x')
#橫坐標加說明文字'x'
plt.ylabel('y')
#縱坐標加說明文字'y'
plt.show()
#顯示圖形

5. 怎樣在Excel中使用python腳本

在Excel中准備調用的python代碼:
def merge_sort_unique(lists):

s = set()

for L in lists:

s.update(L)

return sorted(s)
任意在本地建立一個目錄,並保存這個代碼並命名為Methods.py。我們一步步看看如何從Excel的工作表中如何調用這個腳本。打開Excel,填寫一些數據以便提供python腳本處理,並保持這個表格於剛才的python腳本在同一目錄下。你的工作表應該如下:

現在,備調用python腳本,創建一個新的模塊(Insert | Mole)並敲以下VBA代碼:


Function msu(lists As Range)

Set methods = PyMole("Methods", AddPath:=ThisWorkbook.Path)

Set result = PyCall(methods, "merge_sort_unique", PyTuple(lists.Value2))

msu = WorksheetFunction.Transpose(PyVar(result))

ExitFunction

EndFunction

6. python從excel中找到數據

一、安裝xlrd庫

可以下載xlrd庫包到本地安裝,也可以通過pip命令安裝,這里我選擇pip命令:

pip install xlrd

二、使用xlrd讀取excel數據

具體詳細的操作可以參考xlrd庫操作說明文檔,以下是兩種讀取excel數據的方法:

1、根據Excel中sheet名稱讀取數據:

4、讀取excel中的文本或數值轉換成了float的問題

有時Excel中的值為20,但讀取出來的值卻變成了20.0,這與我們想要的不大一致,特別是做UI自動化測試過程中需要下拉選擇值時就完全選不出想要的選項了。目前我想到的是通過下面的語句來處理:

if isinstance(inputValue,float): #判斷讀取到的值是否為float
if inputValue==int(inputValue): #判斷讀取到的值與轉成int後的值是否相等,如果相等則轉成int
inputValue = int(inputValue)
inputValue = str(inputValue) #轉成str

7. python怎麼從excel中讀取數據

  • #導入包

    import xlrd

    #設置路徑

    path='C:\Users\jyjh\Desktop\datap.xlsx'

    #打開文件

    data=xlrd.open_workbook(path)

8. 如何把excel導入python並讀取內容

讀取excel的庫很多pd庫、xlrd庫都可以。
例如

import xlrdfrom xlrd import xldate_as_tupleimport datetime'''xlrd中單元格的數據類型數字一律按浮點型輸出,日期輸出成一串小數,布爾型輸出0或1,所以我們必須在程序中做判斷處理轉換成我們想要的數據類型0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error'''class ExcelData(): # 初始化方法 def __init__(self, data_path, sheetname): #定義一個屬性接收文件路徑 self.data_path = data_path # 定義一個屬性接收工作表名稱 self.sheetname = sheetname # 使用xlrd模塊打開excel表讀取數據 self.data = xlrd.open_workbook(self.data_path) # 根據工作表的名稱獲取工作表中的內容(方式①) self.table = self.data.sheet_by_name(self.sheetname) # 根據工作表的索引獲取工作表的內容(方式②) # self.table = self.data.sheet_by_name(0) # 獲取第一行所有內容,如果括弧中1就是第二行,這點跟列表索引類似 self.keys = self.table.row_values(0) # 獲取工作表的有效行數 self.rowNum = self.table.nrows # 獲取工作表的有效列數 self.colNum = self.table.ncols # 定義一個讀取excel表的方法 def readExcel(self): # 定義一個空列表 datas = [] for i in range(1, self.rowNum): # 定義一個空字典 sheet_data = {} for j in range(self.colNum): # 獲取單元格數據類型 c_type = self.table.cell(i,j).ctype # 獲取單元格數據 c_cell = self.table.cell_value(i, j) if c_type == 2 and c_cell % 1 == 0: # 如果是整形 c_cell = int(c_cell) elif c_type == 3: # 轉成datetime對象 date = datetime.datetime(*xldate_as_tuple(c_cell,0)) c_cell = date.strftime('%Y/%d/%m %H:%M:%S') elif c_type == 4: c_cell = True if c_cell == 1 else False sheet_data[self.keys[j]] = c_cell # 循環每一個有效的單元格,將欄位與值對應存儲到字典中 # 字典的key就是excel表中每列第一行的欄位 # sheet_data[self.keys[j]] = self.table.row_values(i)[j] # 再將字典追加到列表中 datas.append(sheet_data) # 返回從excel中獲取到的數據:以列表存字典的形式返回 return datasif __name__ == "__main__": data_path = "ttt.xlsx" sheetname = "Sheet1" get_data = ExcelData(data_path, sheetname) datas = get_data.readExcel() print(datas)

9. 怎樣在Excel中使用python腳本

一、使用工具:excel、python

二、使用方法和步驟:

1、先安裝python2.7,然後配置環境變數,保證python在該環境中,打開開始菜單,找到計算機,然後右鍵單擊它,選擇【屬性】

三、注意事項:切記不要勾選python,如果通過這種方式安裝python,你原先安裝的python就無法使用了。

10. 如何把圖片的excel轉為Python裡面的字典

如何將Excel導入Python之中呢?很簡單!做法如下:
首先我們要讀取excel要用到xlrd模塊,官網安裝先上官網安裝。
然後就可以跟著裡面的例子稍微試一下就知道怎麼用了。大概的流程是這樣的:
1、導入模塊
import xlrd
2、打開Excel文件讀取數據
data = xlrd.open_workbook('excel.xls')
3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取② table = data.sheet_by_index(0) #通過索引順序獲取③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)
table.row_values(i)table.col_values(i)
5、獲取行數和列數
table.nrowstable.ncols
6、獲取單元格
table.cell(0,0).valuetable.cell(2,3).value
相對來說獲取cell比較有用,相當於是給了一個二維數組,剩下的想怎麼做都隨著自己性子來。這全部歸功於代碼的簡潔實用。若其中仍有若干小坑則花點時間自己琢磨下吧。以下列出的方法供人參考:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為 空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全 不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決 方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個 呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,可到官網下載
下載後大致的操作流程如下:
1、導入模塊,復制代碼代碼 :
import xlwt
2、創建workbook,就是excel,這里只需要保存下,然後復制代碼:
workbook = xlwt.Workbook(encoding = 'ascii')
3、接著創建表,然後復制代碼:
worksheet = workbook.add_sheet('My Worksheet')
4、再往單元格內寫入內容,復制代碼代碼:
worksheet.write(0, 0, label = 'Row 0, Column 0 Value')
5、最後保存,復制代碼代碼如下:
workbook.save('Excel_Workbook.xls')
以上便是小編對「如何將Excel導入Python之中呢?」的大致介紹,希望能有所幫助!

熱點內容
7z解壓很慢 發布:2025-01-11 16:51:23 瀏覽:940
電腦改文檔伺服器 發布:2025-01-11 16:41:14 瀏覽:869
編譯匯編語言實例 發布:2025-01-11 16:36:55 瀏覽:670
海康ntp校時伺服器地址 發布:2025-01-11 16:34:35 瀏覽:743
伺服器運行超時怎麼辦 發布:2025-01-11 16:34:32 瀏覽:298
人妖迅雷種子ftp 發布:2025-01-11 16:33:04 瀏覽:916
python將列表轉化為字元串 發布:2025-01-11 16:32:11 瀏覽:192
大疆穩定器wifi連接初始密碼多少 發布:2025-01-11 16:25:36 瀏覽:890
專線伺服器運行的項目如何訪問 發布:2025-01-11 16:15:13 瀏覽:720
小米智能攝像機雲存儲 發布:2025-01-11 16:12:08 瀏覽:556