xlwt/xlrd庫 存Excel文件:(如果存儲數據中有字符,那么寫法還有點小小的變化)
- import xlwt
- workbook = xlwt.Workbook(encoding='utf-8')
- booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True)
- #存第一行cell(1,1)和cell(1,2)
- booksheet.write(0,0,34)
- booksheet.write(0,1,38)
- #存第二行cell(2,1)和cell(2,2)
- booksheet.write(1,0,36)
- booksheet.write(1,1,39)
- #存一行數據
- rowdata = [43,56]
- for i in range(len(rowdata)):
- booksheet.write(2,i,rowdata[i])
- workbook.save('test_xlwt.xls')
讀Excel文件:(同樣是對於數值類型數據)
- import xlrd
- workbook = xlrd.open_workbook('D:\\Py_exercise\\test_xlwt.xls')
- print(workbook.sheet_names()) #查看所有sheet
- booksheet = workbook.sheet_by_index(0) #用索引取第一個sheet
- booksheet = workbook.sheet_by_name('Sheet 1') #或用名稱取sheet
- #讀單元格數據
- cell_11 = booksheet.cell_value(0,0)
- cell_21 = booksheet.cell_value(1,0)
- #讀一行數據
- row_3 = booksheet.row_values(2)
- print(cell_11, cell_21, row_3)
- >>>34.0 36.0 [43.0, 56.0]
openpyxl 庫 存Excel文件:
- from openpyxl import Workbook
- workbook = Workbook()
- booksheet = workbook.active #獲取當前活躍的sheet,默認是第一個sheet
- #存第一行單元格cell(1,1)
- booksheet.cell(1,1).value = 6 #這個方法索引從1開始
- booksheet.cell("B1").value = 7
- #存一行數據
- booksheet.append([11,87])
- workbook.save("test_openpyxl.xlsx")
讀Excel文件:
- from openpyxl import load_workbook
- workbook = load_workbook('D:\\Py_exercise\\test_openpyxl.xlsx')
- #booksheet = workbook.active #獲取當前活躍的sheet,默認是第一個sheet
- sheets = workbook.get_sheet_names() #從名稱獲取sheet
- booksheet = workbook.get_sheet_by_name(sheets[0])
- rows = booksheet.rows
- columns = booksheet.columns
- #迭代所有的行
- for row in rows:
- line = [col.value for col in row]
- #通過坐標讀取值
- cell_11 = booksheet.cell('A1').value
- cell_11 = booksheet.cell(row=1, column=1).value
原理上其實都一樣,就寫法上有些差別。
其實如果對存儲格式沒有要求的話,我覺得存成 csv文件 也挺好的:
- import pandas as pd
- csv_mat = np.empty((0,2),float)
- csv_mat = np.append(csv_mat, [[43,55]], axis=0)
- csv_mat = np.append(csv_mat, [[65,67]], axis=0)
- csv_pd = pd.DataFrame(csv_mat)
- csv_pd.to_csv("test_pd.csv", sep=',', header=False, index=False)
因為它讀起來非常簡單:
- import pandas as pd
- filename = "D:\\Py_exercise\\test_pd.csv"
- csv_data = pd.read_csv(filename, header=None)
- csv_data = np.array(csv_data, dtype=float)