xlspython
㈠ python修改xls文件
你說的源文件指的是什麼?從圖中看「源文件」中對excel的寫入沒有分列,把數據都寫在了第一列,這些數據是從哪來的,以什麼形式獲取的呢?
我按照你的圖片寫了下面這個代碼,是python打開excel對指定單元格寫入數據的基本程序,你可以參考參考,希望對你能有所幫助!
==================================
#本程序在python2.6版本下測試通過
import win32com.client #這里用到win32com.client,需要安裝pywin32模塊
#下載地址 http://sourceforge.net/projects/pywin32/files/pywin32/Build216/
xlApp = win32com.client.Dispatch('Excel.Application') #打開EXCEL,這里不需改動
xlBook = xlApp.Workbooks.Open('D:\\1.xls') #將D:\\1.xls改為要處理的excel文件路徑
xlSht = xlBook.Worksheets('sheet1') #要處理的excel頁,默認第一頁是『sheet1』
a=['aa','cc','ss','ee','11','qq','sss','fff'] #准備填入excel的數據
b=['aaa','www','rras','ff','gfaga','gg','aa'] #准備填入excel的數據
for i in range(1,len(a)+1):
xlSht.Cells(1,i).Value=a[i-1] #將列表a中數據填入第一行
for i in range(1,len(b)+1):
xlSht.Cells(2,i).Value=b[i-1] #將列表b中數據填入第二行
xlSht.Cells(5,3).Value='abcde' #可以用這種方法給
xlBook.Close(SaveChanges=1) #完成 關閉保存文件
del xlApp
㈡ 如何用python操作excel
指定選取三列然後挑選出同時滿足>=1或者同時<=-1的 將其所有數據存入新的csv表格中
程序如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2014-04-10 21:47:56
# @Function: 指定選取三列然後挑選出同時滿足>=1或者同時<=-1的 將其所有數據存入新的csv表格中
# @Author : BeginMan
import os
import string
import xlrd
import xlwt
def get_data():
"""獲取excel數據源"""
file = r'C:\Users\Administrator\Desktop\pytool\xlrd\initial_log_data.xls' # 改成自己的路徑
filepath = raw_input(u'請將xls文件路徑粘貼進去,如果程序里已經指定了文件則按Enter鍵繼續:')
is_valid = False # 驗證文件
try:
filepath = [file, filepath][filepath != '']
print filepath
# 判斷給出的路徑是不是xls格式
if os.path.isfile(filepath):
filename = os.path.basename(filepath)
if filename.split('.')[1] == 'xls':
is_valid = True
data = None
if is_valid:
data = xlrd.open_workbook(filepath)
except Exception, e:
print u'你操作錯誤:%s' %e
return None
return data
def handle_data():
"""處理數據"""
data = get_data()
if data:
col_format = ['B', 'C', 'D'] # 指定的列
inp = raw_input(u'請選擇指定的三列,用逗號分隔,默認的是B,C,D(英文逗號,不區分大小寫),如果選擇默認則按Enter鍵繼續:\n')
try:
inp = inp.split(',')
col_format = [col_format,inp][len([i for i in inp if i in string.letters]) == 3]
col_format = [i.upper() for i in col_format] # 轉換成大寫
table = data.sheet_by_index(0) # 選取第一個工作區
nrows = table.nrows # 行數
ncols = table.ncols # 列數
str_upcase = [i for i in string.uppercase] # 所有大寫字母
i_upcase = range(len(str_upcase)) # 對應的數字
ncols_dir = dict(zip(str_upcase,i_upcase)) # 格式成字典
col_index = [ncols_dir.get(i) for i in col_format] # 獲取指定列所對應的索引
# 選取的三列是否同時滿足 >=1或者同時<=-1
print u'正在檢索中……'
count = 0
result = []
for i in xrange(nrows):
cell_0 = table.cell(i,col_index[0]).value
cell_1 = table.cell(i,col_index[1]).value
cell_2 = table.cell(i,col_index[2]).value
if (cell_0>=1 and cell_1>=1 and cell_2>=1) or (cell_0<=-1 and cell_1<=-1 and cell_2<=-1):
result.append(table.row_values(i)) # 將符合要求的一行添加進去
count += 1
print u'該文件中共%s行,%s列,其中滿足條件的共有%s條數據' %(nrows, ncols, count)
print u'正在寫入數據……'
col_name = col_format[0]+col_format[1]+col_format[2]
if write_data(result, col_name):
print u'寫入成功!'
except Exception, e:
print u'你操作錯誤:%s' %e
return None
else:
print u'操作失敗'
return None
def write_data(data, name):
"""寫入數據,data為符合條件的數據列表,name表示指定的哪三個列,以此命名"""
file = xlwt.Workbook()
table = file.add_sheet(name,cell_overwrite_ok=True)
l = 0 # 表示行
for line in data:
c = 0 # 表示一行下的列數
for col in line:
table.write(l,c,line[c])
c += 1
l += 1
defatul_f = r'C:\Users\Administrator\Desktop\pytool\xlrd' # 默認路徑
f = raw_input(u'請選擇保存文件的路徑:按回車跳過:')
f_name = r'\%s.xls' % name
filepath = [defatul_f+f_name, f+f_name][f != '']
file.save(filepath)
return True
def main():
handle_data()
if __name__ == '__main__':
main()
㈢ python 怎樣讀取xls文件內容
用python對excel的讀寫操作,要用到兩個庫:xlrd和xlwt,首先下載安裝這兩個庫。
1、#讀取Excel
import xlrd
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:
print item
2、寫Excel文件
'''往EXCEl單元格寫內容,每次寫一行sheet:頁簽名稱;row:行內容列表;rowIndex:行索引;
isBold:true:粗欄位,false:普通字體'''
def WriteSheetRow(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單元格的背景色為黃色,字體為粗體
for svalue in rowValueList:
strValue = unicode(str(svalue),'utf-8')
if isBold:
sheet.write(rowIndex,i,strValue,style)
else:
sheet.write(rowIndex,i,strValue)
i = i + 1
'''寫excel文件'''
def save_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)
for i in xrange(1,11):
rowIndex = rowIndex + 1
valueList = []
for j in xrange(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;')
㈣ python批處理excel文件
python代碼,都沒縮進,沒法看。
關於xlrd,可以參考我寫的:
【整理】Python中,添加寫入數據到已經存在的Excel的xls文件,即打開excel文件,寫入新數據
【記錄】Python中安裝可以讀寫excel的xls文件的xlutils模塊(需依賴於xlrd和xlwt)
【記錄】Python中安裝xlrd模塊
㈤ python 處理xls文件,讀取創建者,最後一次修改者的文件屬性信息,應該如何操作
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum 於1990 年代初設計,作為一門叫做ABC語言的替代品。Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。
㈥ Python將xls轉換成xlsx
首先需要安裝Python,我這里安裝的是Python3.6.4(注意:Python3和2版本語法有改動)
到官網進行下載安裝。
選擇對應版本的安裝包即可,因為我這台電腦是Win10 64位,所以選擇Windows x86-64 executable installer。
安裝pywin32
pywin32貌似不能通過pip3 install下載,不過可以在sourceforge中找到下載地址
在其中選擇對應版本的安裝包即可,我的python版本(通過命令行下執行python --version查看)是3.6.4,所以我選擇下載pywin32-221.win-amd64-py3.6.exe。
下載下來後執行安裝。
代碼
安裝好了Python3和Pywin32之後,我們便可以在代碼中調用win32com.client了。
下面的代碼用於演示將一個xls格式文件另存為xlsx格式。
import win32com.client as win32
㈦ python如何處理 xls文件
python處理xls文件的包/模塊很多,如xlrd、xlwt、openpyxl,以及pandas等,具體操作方法查看相關文檔就可以。由於處理方式具有針對性,所以一看就能明白,其操作如:打開文件,打開哪一sheet,選取哪一行、列、單元格等。
㈧ python往xls寫數據的問題
問題:
xlwt創建一個新的excel文件,然後添加sheet,寫入數據;我需要向已經有數據的excel文件中追加數據;
解決辦法:
再網路上找到一個思路:
1:打開已經存在的.xls文件
2:一份已經存在.xls的文件
3:向文件中寫入數據
4:刪除之前的文件
5:保存一份相同的文件
文件內容大致如下,提示不存在
原理還需要安裝一個包:xlutils;
下載xlutils,安裝,修改py;文件內容如下:
執行成功;確認excel文件內容確實被修改:
總結:
往已經存在的xls文件中,寫入新的行,新的數據,對應的邏輯為:
1:用xlrd.open_workbook打開已有的xsl文件
2:然後用,from xlutils. import ;,之後的去從打開的xlrd的Book變數中,拷貝出一份,成為新的xlwt的Workbook變數
3:然後對於xlwt的Workbook變數,就是正常的:
通過get_sheet去獲得對應的sheet
拿到sheet變數後,就可以往sheet中寫入新的數據
4:寫完新數據後,最終save保存
㈨ python 讀寫一個xls文件
一、讀取excel
這里介紹一個不錯的包xlrs,可以工作在任何平台。這也就意味著你可以在Linux下讀取Excel文件。
首先,打開workbook;
代碼如下:
import xlrd
wb = xlrd.open_workbook('myworkbook.xls')
檢查表單名字:
代碼如下:
wb.sheet_names()
得到第一張表單,兩種方式:索引和名字
代碼如下:
sh = wb.sheet_by_index(0)
sh = wb.sheet_by_name(u'Sheet1')
遞歸列印出每行的信息:
代碼如下:
for rownum in range(sh.nrows):
print sh.row_values(rownum)
如果只想返回第一列數據:
代碼如下:
first_column = sh.col_values(0)
通過索引讀取數據:
cell_A1 = sh.cell(0,0).value
cell_C4 = sh.cell(rowx=3,colx=2).value
注意:這里的索引都是從0開始的。
二、寫excel
這里介紹一個不錯的包xlwt,可以工作在任何平台。這也就意味著你可以在Linux下保存Excel文件。
基本部分
在寫入Excel表格之前,你必須初始化workbook對象,然後添加一個workbook對象。比如:
代碼如下:
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet 1')
這樣表單就被創建了,寫入數據也很簡單:
代碼如下:
# indexing is zero based, row then column
sheet.write(0,1,'test text')
之後,就可以保存文件(這里不需要想打開文件一樣需要close文件):
代碼如下:
wbk.save('test.xls')
㈩ 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里是一樣的。