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里是一样的。