㈠ python讀取excel的問題
你試這樣子。將
jp.write(buf[i].decode('utf-8'))
改成
jp.write(unicode(buf[i]).encode('utf-8'))
python2有自動編碼轉換的功能。原來type(buf[i])如果是unicode,你還要decode,那麼它會自動先按ascii進行encode,變成str型後,再運行decode('utf-8')。所以就會出現你上面的那個錯誤,漢字是不能encode成ascii的。
也許剛才的答案是錯誤的。
你還可以試試
jp.write(buf[i])
另外說明一下。寫到socket或者是文件里,必須是string類型。不能是unicode。
這在python2和python3里是一樣的。
㈡ xls文件用python無法讀取,但是卻能用excel打開
你試這樣子。將
jp.write(buf[i].decode('utf-8'))
改成
jp.write(unicode(buf[i]).encode('utf-8'))
python2有自動編碼轉換的功能。原來type(buf[i])如果是unicode,你還要decode,那麼它會自動先按ascii進行encode,變成str型後,再運行decode('utf-8')。所以就會出現你上面的那個錯誤,漢字是不能encode成ascii的。
也許剛才的答案是錯誤的。
你還可以試試
jp.write(buf[i])
另外說明一下。寫到socket或者是文件里,必須是string類型。不能是unicode。
這在python2和python3里是一樣的。
㈢ python中怎麼打開excel
讀excel要用到xlrd模塊,官網安裝(http://pypi.python.org/pypi/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.nrows
table.ncols
6、獲取單元格
table.cell(0,0).value
table.cell(2,3).value
就我自己使用的時候覺得還是獲取cell最有用,這就相當於是給了你一個二維數組,餘下你就可以想怎麼干就怎麼幹了。得益於這個十分好用的庫代碼很是簡潔。但是還是有若干坑的存在導致話了一定時間探索。現在列出來供後人參考吧:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過後來發現是因為空格。因為在excel中輸入的時候很可能會順手在一些名字後面加上幾個空格或是tab鍵,這樣看起來沒什麼差別,但是程序處理的時候這就是兩個完全不同的串了。我的解決方法是給每個獲取的字元串都加上strip()處理一下。效果良好
2、還是字元串的匹配,在判斷某個單元格中的字元串(中文)是否等於我所給出的的時候發現無法匹配,並且各種unicode也不太奏效,網路過一些解決方案,但是都比較復雜或是沒用。最後我採用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,官網下載(http://pypi.python.org/pypi/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')
㈣ 如何用python讀取excel文件
1.首先說明我是使用的python3.5,我的office版本是2010,首先打開dos命令窗,安裝必須的兩個庫,命令是:
pip3 install xlrd
Pip3 install xlwt
2.准備好excel,例如我的一個工作文件,我放在D盤/網路經驗/11.xlsx,只有一個頁簽A,內容是一些銷售數據
3.打開pycharm,新建一個excel.py的文件,首先導入支持庫
import xlrdimport xlwt
4.針對剛入門的新手,先介紹三個知識,第一個:獲取excel的sheet名稱,第二:獲取excel行數與列數,第三:獲取第幾行第幾列的具體值,這是最常用的三個知識點
5.貼出代碼,具體分析:
(1)要操作excel,首先得打開excel,使用open_workbook(‘路徑’)
(2)要獲取行與列,使用nrows(行),ncols(列)
(3)獲取具體的值,使用cell(row,col).value
workbook=xlrd.open_workbook(r'E:11.xlsx')print (workbook.sheet_names()) sheet2=workbook.sheet_by_name('A') nrows=sheet2.nrows ncols=sheet2.ncols print(nrows,ncols) cell_A=sheet2.cell(1,1).value print(cell_A)
6.要在excel里寫入值,就要使用write屬性,重點說明寫入是用到xlwt這個支援庫,思路是先新建excel,然後新建頁簽B,然後將一組數據寫入到B,最後保存為excel.xls,這里建議保存為2003的格式,大部分電腦都能打開,特別注意保存的excel的路徑是在python工作文件的目錄下面,貼出代碼:
stus = [['年', '月'], ['2018', '10'], ['2017', '9'], ['2016', '8']]Excel = xlwt.Workbook() # 新建excelsheet = Excel.add_sheet('B') #新建頁簽Brow = 0for stu in stus: col = 0 for s in stu: sheet.write(row, col, s) #開始寫入 col = col + 1 row = row + 1Excel.save('Excel.xls') #保存
關於如何用python讀取excel文件,環球青藤小編就和大家分享到這里了,學習是永無止境的,學習一項技能更是受益終身,所以,只要肯努力學,什麼時候開始都不晚。如果您還想繼續了解關於python編程的學習方法及素材等內容,可以點擊本站其他文章學習。
㈤ 使用python讀寫excel的問題
可以,如果arcgis是10版本,可以用arcpy模塊中的SearchCursor讀取shp的屬性表;用python讀寫excel需要安裝pythonWin或者安裝comtypes都可以,你可以上網找一下這樣的資料。
㈥ python小白 第二天用python 找不到 excel文件
這個默認是當前路徑,如果找不到,可以嘗試用絕對路徑
㈦ python怎麼讀寫excel文件
最近用python處理一個小項目,其中涉及到對excel的讀寫操作,通過查資料及實踐做了一下總結,以便以後用。
python讀寫excel文件要用到兩個庫:xlrd和xlwt,首先下載安裝這兩個庫。
1、#讀取Excel
importxlrd
data = xlrd.open_workbook(excelFile)
table = data.sheets()[0]
nrows = table.nrows #行數
ncols = table.ncols #列數
for i in xrange(0,nrows):
rowValues= table.row_values(i) #某一行數據
for item in rowValues:
printitem
2、寫Excel文件
'''往EXCEl單元格寫內容,每次寫一行sheet:頁簽名稱;row:行內容列表;rowIndex:行索引;
isBold:true:粗欄位,false:普通字體'''
defWriteSheetRow(sheet,rowValueList,rowIndex,isBold):
i = 0
style = xlwt.easyxf('font: bold 1')
#style = xlwt.easyxf('font: bold 0, color red;')#紅色字體
#style2 = xlwt.easyxf('pattern: pattern solid, fore_colour yellow; font: bold on;') # 設置Excel單元格的背景色為黃色,字體為粗體
forsvalue inrowValueList:
strValue = unicode(str(svalue),'utf-8')
ifisBold:
sheet.write(rowIndex,i,strValue,style)
else:
sheet.write(rowIndex,i,strValue)
i = i + 1
'''寫excel文件'''
defsave_Excel(strFile):
excelFile = unicode(strFile,"utf8")
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet1',cell_overwrite_ok=True)
headList = ['標題1','標題2','標題3','標題4','總計']
rowIndex = 0
WriteSheetRow(sheet,headList,rowIndex,True)
fori inxrange(1,11):
rowIndex = rowIndex + 1
valueList = []
forj inxrange(1,5):
valueList.append(j*i)
WriteSheetRow(sheet,valueList,rowIndex,False)
wbk.save(excelFile)
style2 = xlwt.easyxf('pattern: pattern solid, fore_colour yellow; font: bold on;')
在設置上Excel單元格的背景色時,fore_colour支持的顏色是有限的,僅支持一下顏色
aqua 0x31
black 0x08
blue 0x0C
blue_gray 0x36
bright_green 0x0B
brown 0x3C
coral 0x1D
cyan_ega 0x0F
dark_blue 0x12
dark_blue_ega 0x12
dark_green 0x3A
dark_green_ega 0x11
dark_purple 0x1C
dark_red 0x10
dark_red_ega 0x10
dark_teal 0x38
dark_yellow 0x13
gold 0x33
gray_ega 0x17
gray25 0x16
gray40 0x37
gray50 0x17
gray80 0x3F
green 0x11
ice_blue 0x1F
indigo 0x3E
ivory 0x1A
lavender 0x2E
light_blue 0x30
light_green 0x2A
light_orange 0x34
light_turquoise 0x29
light_yellow 0x2B
lime 0x32
magenta_ega 0x0E
ocean_blue 0x1E
olive_ega 0x13
olive_green 0x3B
orange 0x35
pale_blue 0x2C
periwinkle 0x18
pink 0x0E
plum 0x3D
purple_ega 0x14
red 0x0A
rose 0x2D
sea_green 0x39
silver_ega 0x16
sky_blue 0x28
tan 0x2F
teal 0x15
teal_ega 0x15
turquoise 0x0F
violet 0x14
white 0x09
yellow 0x0D"""
另外一種方式是 用pyExcelerator
㈧ python讀取Excel數據時途中為什麼會提示錯誤呢
這只是警告,提示你get_sheet_by_name這個方法 被舍棄了,你去文檔查下最新的取sheet方法吧。
目前不影響你使用。
推薦你讀取excel 還是使用 python 的pandas包, 裡面的read_excel, read_csv等方法
㈨ [python]在spyder軟體中利用pandas讀取excel文件失敗的問題
注意最後一行的錯誤提示:
FileNotFoundError:[Errno2]Nosuchfileordirectory:'J:/Pepole.xlsx'
這表示此文件在你電腦中不存在,請檢查該路徑的合法性!
㈩ 為什麼我用python讀取excel數據顯示不出來
python操作Excel讀寫--使用xlrd
一、安裝xlrd模塊
到python官網下載http://pypi.python.org/pypi/xlrd模塊安裝,前提是已經安裝了python 環境。
二、使用介紹
1、導入模塊
import xlrd
2、打開Excel文件讀取數據
data = xlrd.open_workbook('excelFile.xls')
3、使用技巧
獲取一個工作表
table = data.sheets()[0] #通過索引順序獲取
table = data.sheet_by_index(0) #通過索引順序獲取
table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
獲取整行和整列的值(數組)
table.row_values(i)
table.col_values(i)
獲取行數和列數
nrows = table.nrows
ncols = table.ncols
循環行列表數據
for i in range(nrows ):
print table.row_values(i)
單元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
簡單的寫入
row = 0
col = 0
# 類型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1value = '單元格的值'
xf = 0# 擴展的格式化
table.put_cell(row, col, ctype, value, xf)
table.cell(0,0) #單元格的值'
table.cell(0,0).value #單元格的值'
三、Demo代碼
Demo代碼其實很簡單,就是讀取Excel數據。
#-*-coding:utf-8-*-
importxdrlib,sys
importxlrd
defopen_excel(file='file.xls'):
try:
data=xlrd.open_workbook(file)
returndata
exceptException,e:
printstr(e)
#根據索引獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_index:表的索引
defexcel_table_byindex(file='file.xls',colnameindex=0,by_index=0):
data=open_excel(file)
table=data.sheets()[by_index]
nrows=table.nrows#行數
ncols=table.ncols#列數
colnames=table.row_values(colnameindex)#某一行數據
list=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
#根據名稱獲取Excel表格中的數據參數:file:Excel文件路徑colnameindex:表頭列名所在行的所以,by_name:Sheet1名稱
defexcel_table_byname(file='file.xls',colnameindex=0,by_name=u'Sheet1'):
data=open_excel(file)
table=data.sheet_by_name(by_name)
nrows=table.nrows#行數
colnames=table.row_values(colnameindex)#某一行數據
list=[]
forrownuminrange(1,nrows):
row=table.row_values(rownum)
ifrow:
app={}
foriinrange(len(colnames)):
app[colnames[i]]=row[i]
list.append(app)
returnlist
defmain():
tables=excel_table_byindex()
forrowintables:
printrow
tables=excel_table_byname()
forrowintables:
printrow
if__name__=="__main__":
main()