A. pip python3 xlrd 怎麼安裝
安裝xlrd和xlwt很簡單,直接【pip install xlrd】和【pip install xlwt】即可。用【pip install xlutils】則會報錯.
B. 使用python讀取excel中的數據,並重新寫入到新的excel中
使用Python3運行
起初是讀取excel中的數據,進行相關的計算將結果追加在後面,沒有找到合適的辦法,就只能採用這種讀取數據,進行相關操作,重新寫入的方法
(1)使用xlrd打開xls文件,讀取數據
(2)將需要的數據放進list中,進行相應的計算得出結果
(3)使用xlutils的將xlrd對象轉化為xlwt對象
(4)使用轉化的xlwt對象的write方法,將結果寫入
(5)使用xlwt的save進行保存
主要用它讀取Excel數據
主要用它來將數據寫入到excel中
主要用xlutils的方法將xlrd對象轉化為xlwt對象,好來進行寫入
刪除了一些東西大致如下
C. Python中操作Excel最好用的模塊是
Python中的模塊也稱為庫,在Python中操作Excel的模塊有很多。
優缺點如下:
**1、Pandas模塊**
Pandas是Python的一一個開源數據分析模塊,可用於數據挖掘和數據分析,同時也提供數據清洗功能,可以說它是日前Python數據分析的必備工具之一。Pandas能夠處理類似電子表格的數據,用於數據快速載入、操作、對齊、合並、數據預處理等。
Pandas通過對Excel文件的讀寫實現數據輸入、輸出,Pandas支持.xls和.xlsx格式文件的讀寫,支持只載入每個表的單一工作頁。
import pandas as pd
df=pd.read_excel(r'E:ban.xlsx') #pandas 導入庫獲取excel表的數據內容
df`
**2、xlwings模塊**
xlwings模塊可以實現Python中調用Excel,也可以從Excel調用Python,這個模塊支持支持.xls和.xlsx格式文件的讀寫,支持對這類文件的操作,還支持使用VBA,具有強大的轉換功能,並且可以處理大部分數據類型。
**3、Xlrd模塊**
xlrd模塊可以讀取Excel文件,其對Excel文件的讀取可以實現比較精細的控制。雖然現在使用Pandas模塊讀取和保存Excel文件往往更加方便快捷,但在某些場景下,依然需要xlrd這種更底層的模塊來實現對Excel文件讀取的控制。
xlrd模塊支持.xls、.xlsx格式文件的讀取,但不支持寫信息。
**4、xlwt模塊**
前面xlrd模塊可以讀取Excel文件,但不能寫。而xlwt模塊可以寫、可以修改Excel文件,但不能讀,且只支持.xls格式文件的寫操作。
**5、xlutils模塊**
xlutils也是一個處理Excel文件的模塊,但它不能對Excel文件進行讀和寫的操作,但依賴於xlrd模塊和xlwt模塊。xlutils模塊支持.xls格式文件,不支持.xlsx格式文件。
**6、openpyxl模塊**
openpyxl模塊可以對.xlsx格式的Excel文件進行讀寫操作,特點是讀取快、寫入慢,且不能操作.xls格式文件。
**7、xlsxwriter模塊**
xlsxwriter模塊支持多種Excel功能,可以寫.xlsx格式的Excel文件,而且速度快、佔用內存空間小,但不支持讀或者修改現有的Excel文件。
**8、win32com模塊**
win32com模塊支持.xls、.xlsx格式的Excel文件的讀、寫和修改,讀寫速度快。但win32com模塊存在於pywin32的模塊中,自身沒有完善的文檔,使用起來不太方便。
**9、分析總結**
Pandas模塊把Excel當作數據讀寫的容器,為其強大的數據分析服務,因此讀寫性能的表現中規中矩。xlwings和win32com這兩個模塊都擁有很好的讀寫性能,強大的轉換器可以處理大部分數據類型,同時,可以在程序運行時,在打開的Excel文件中進行實時操作,實現過程的可視化。另外,xlwings模塊的數據結構轉換器使其可以快速地為Excel文件添加二維數據結構,而不需要在Excel文件中重定位數據的行和列,因此筆者認為,從讀寫的便捷性來看,xlwings模塊比較好用一些。
D. python導入xlutils時遇到的問題
你可以用dir命令看看允許訪問的方法,
>>>importxlutils
>>>dir(xlutils)
['__builtins__','__doc__','__file__','__name__','__package__','__path__']
>>>
>>>fromxlutils.import*
>>>dir(xlutils.)
['XLRDReader','XLWTWriter','__builtins__','__doc__','__file__','__name__','__package__','','process']
>>>
單純 import xlutils,沒有方法讓你訪問,所以你定位不到.()。
E. Python操作Excel實現自動化報表
Python操作Excel實現自動化報表
安裝
python -m pip install xlrd xlwt xlutils。
基本用法
1.從指定文件路徑讀取excel表格,進行一定操作,然後保存到另一個excel文件:result.xlsx
import xlwt
import xlrd
from xlutils. import
import pandas as pd
from pandas import DataFrame,Series
import os
os.chdir('./')
# 從指定文件路徑讀取excel表格
df = pd.read_excel('D:/mypaper/data/data.xlsx')
# 查看df內容
# 根據age算出出生年份,增加一列
import datetime
import os
year = datetime.datetime.now().year#獲取當前系統時間對應的年份
df['birth'] = year-df['age']
df.to_excel('result.xlsx')#保存到當前工作目錄,可以用os.getcwd()查看
#查看下此時df的內容,可以看到已經生成了birth這一列。
2.單元格操作
# 定義方法:讀取指定目錄下Excel文件某個sheet單元格的值
def excel_read(file_path,table,x,y):
data = xlrd.open_workbook(file_path)
table = data.sheet_by_name(table)
return table.cell(y,x).value
# 定義方法:單元格值及樣式
write_obj_list = []
def concat_obj(cols,rows,value):
write_obj_list.append({'cols':cols,'rows':rows,'value':value,
'style':xlwt.easyxf('font: name 宋體,height 280;alignment: horiz centre')})
# 定義方法:合並單元格
def merge_unit(srows,erows,scols,ecols,value):
write_obj_list.append({'id':'merge','srows':srows,'erows':erows,'scols':scols,
'ecols':ecols,'value':value,'style':xlwt.easyxf('font: name 宋體,height 280;alignment: horiz centre')})
# 定義方法:更新excel
excel_update(file_path,write_obj_list,new_path):
old_excel = xlrd.open_workbook(file_path, formatting_info=True)
#管道作用
new_excel = (old_excel)
'''
通過get_sheet()獲取的sheet有write()方法
'''
sheet1 = new_excel.get_sheet(0)
'''
1代表是修改第幾個工作表裡,從0開始算是第一個。此處修改第一個工作表
'''
for item in write_obj_list:
if 'id' not in item.keys():
if 'style' in item.keys():
sheet1.write(item['rows'], item['cols'], item['value'],item['style'])
else:
sheet1.write(item['rows'], item['cols'], item['value'])
else:
if 'style' in item.keys():
sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'],item['style'])
else:
sheet1.write_merge(item['srows'],item['erows'],item['scols'], item['ecols'], item['value'])
'''
如果報錯 dict_items has no attributes sort
把syle源碼中--alist.sort() 修改為----> sorted(alist)
一共修改2次
'''
new_excel.save(file_path)
#參數詳解
# srows:合並的起始行數
# erows:合並的結束行數
# scols:合並的起始列數
# ecols:合並的結束列數
# value:合並單元格後的填充值
# style:合並後填充風格:
# font: name 宋體
# height 280;
# alignment: horiz centre
# ... 與excel操作基本保持一致
(注意:該方法僅僅是將需要直行的動作保存到一個list中,真正的動作還未執行,執行動作是發生在excel_update方法中)
最終調用excel_update方法,傳入每個單元格需要進行的操作和填充值的write_obj_list以及文件保存路徑file_path,就可以在當前工作目錄下生成想要的Excel結果文件。
注意:
1.write_obj_list支持用戶自定義
2.write_obj_list也可以是根據excel_read方法讀取現有待修改的excel文件(可以維持原有表格的格式)而生成
End