python操作excel读取数据,如何返回的是gbk
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python操作excel读取数据,如何返回的是gbk相关的知识,希望对你有一定的参考价值。
我写了一个程序, 但是读取出来的编码不对, 请各位大神帮忙看一下,如果有更简便的办法,请贴出来,让我学习学习。
def open_excel(file= 'G:/123.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
def excel_table_byindex(file= 'G:/123.xls',colnameindex=0,by_index=0,encoding='utf-8',):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows
ncols = table.ncols
colnames = table.row_values(colnameindex)
list =[]
for rownum in range(1,nrows):
row = table.row_values(rownum)
if row:
app =
for i in range(len(colnames)):
app[colnames[i]] = row[i]
list.append(app)
return list
def main():
tables = excel_table_byindex()
for row in tables:
print row
if __name__=="__main__":
# gbkToUtf8(".")
main()
最好是加我q详谈。 2101949880
大神们帮帮忙啊 , 小弟真的是很急。
book = open_workbook('123.xls',encoding='cp1252')追问
不好使, 你能调试好把所有代码发上来么?
追答除了一个循环自变量有问题,其他跑的没问题啊。
你excel文件保存的encoding是什么
import traceback
import xlrd
def open_excel(file= 'D:/123.xls'):
try:
data = xlrd.open_workbook(file)
return data
except Exception as ex:
print(ex)
def excel_table_byindex(file= 'D:/123.xls',colnameindex=0,by_index=0,encoding='utf-8',):
data = open_excel(file)
table = data.sheets()[by_index]
nrows = table.nrows
ncols = table.ncols
colnames = table.row_values(colnameindex)
list =[]
for rownum in range(nrows):
row = table.row_values(rownum)
if row:
app =
for i in range(len(colnames)):
app[colnames[i]] = row[i]
list.append(app)
return list
def main():
tables = excel_table_byindex()
for row in tables:
print(row, '\n')
if __name__=="__main__":
# gbkToUtf8(".")
main()
现在执行完代码读取出来的是u'\u5e10\u53f7', 我想要直接转换成中文的啊。
追答这个数据是对的,“账号”两个字的unicode 编码就是 5e10,53f7
这个只是你打印的控制台不支持中文显示而已,你用pythonwin直接运行就一切正常了;
控制台如果encode是可以输出中文的, 但是我不知道在这个代码里怎么加转码的这句话
追答print(row.encode('gbk'), '\n')
大约就是这样,直接转换编码
data.encode('utf8')追问
哥们你能改好了。 然后把整篇改好的代码一起发一下么
参考技术C 300python普及课程群为你解惑,欢迎加盟!python如何操作当前已经打开的excel?
对人已经打开的excel如何操作?
vb中人写法是:getobject(,"Excel.Application")
python怎么写?
注意:是已经人为打开的excel,不要open方法重新打开的那种
1. 双击打开一个Excel文件
2. 选择sheet
3. 对sheet里面的东西进行操作
在python中我们使用第三方模块 openpyxl模块操作Excel
ps:这个模块不是python自带的 是第三方模块需要我们下载的
进入终端输入: pip install openpyxl
如果想要下载快点:百度搜索 python第三方源
from openpyxl import load_workbook
# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2. 选择sheet
# 2.1 获取所有sheet
# print(workbook.sheetnames)
# 2.2 选择sheet
sheet = workbook["Sheet1"]
print(sheet.max_row) # 最大行号
print(sheet.max_column) # 最大列号
# 2.3 我们选择了sheet后就可以去操作数据了
# cell = sheet.cell(1, 1) # 获取到单元格
# print(cell.value)
sheet 相关操作
from openpyxl import load_workbook
# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2. 选择sheet
# 2.1 获取所有sheet
# print(workbook.sheetnames)
# 2.2 选择sheet
# sheet = workbook["Sheet1"]
# 2.3 基于索引的方式获取sheet
# sheet = workbook.worksheets[0]
# 3. 获取到所有的sheet
# for name in workbook.sheetnames:
# sheet = workbook[name]
# cell = sheet.cell(1, 1)
# print(cell.value)
读单元格的数据
from openpyxl import load_workbook
# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2 获取sheet
sheet = workbook.worksheets[0]
# 获取到第N行第N列的单元格
# cell = sheet.cell(1, 2)
# print(cell.value)
# 获取到某个单元格
# cell = sheet['A2']
# print(cell.value)
# print()
# for cell in sheet[1]: # 获取到第一行的内容
# print(cell.value)
# 获取到所有的行的数据 获取到一列的值
# for row in sheet.rows:
# print(row[0].value)
# 获取到所有的列的数据 获取到一行的值
for col in sheet.columns:
print(col[0].value)
写Excel
# 在Excel中想要写文件 大致可以分为两种
# 1. 在原有的Excel的基础上写内容
# 2. 在一个新的Excel里面写内容
1. 打开Excel表格
2. 找到单元格 修改写入内容
3. 保存
# from openpyxl import load_workbook
#
# # 1. 打开Excel文件
# workbook = load_workbook("p1.xlsx")
# # 2 获取sheet
# sheet = workbook.worksheets[0]
#
# # 获取到第N行第N列的单元格
# # cell = sheet.cell(1, 2)
# # print(cell.value)
#
# # 获取到某个单元格
#
# # cell = sheet['A2']
# # print(cell.value)
#
# # print()
# # for cell in sheet[1]: # 获取到第一行的内容
# # print(cell.value)
#
#
# # 获取到所有的行的数据 获取到一列的值
# # for row in sheet.rows:
# # print(row[0].value)
#
# # 获取到所有的列的数据 获取到一行的值
# for col in sheet.columns:
# print(col[0].value)
# from openpyxl import workbook
# wb = workbook.Workbook() # 创建一个Excel会默认有一个sheet 就叫 Sheet
# 1. 修改sheet名称
# sheet = wb.worksheets[0]
# sheet.title = '数据集'
# wb.save('p2.xlsx')
# 2. 创建一个新的sheet 还可以设置颜色
# sheet = wb.create_sheet('工作计划', 1)
# sheet.sheet_properties.tabColor = 'FFB6C1'
# wb.save('p2.xlsx')
# 3. copy sheet
# sheet = wb.create_sheet('工作计划')
# sheet.sheet_properties.tabColor = 'FFB6C1'
#
# new_sheet = wb.copy_worksheet(wb['Sheet'])
# new_sheet.title = '新的计划'
# wb.save('p2.xlsx')
# print(wb.sheetnames)
# sheet = wb.worksheets[0]
# cell = sheet.cell(1, 1)
# cell.value = '哈哈哈'
#
# wb.save('p2.xlsx')
from openpyxl import load_workbook
# 1. 打开Excel文件
workbook = load_workbook("p2.xlsx")
# 2 获取sheet
sheet = workbook.worksheets[0]
# 1. 获取某个单元格 修改值
# cell = sheet.cell(1, 1)
# cell.value = '哈哈哈'
# wb.save('p2.xlsx')
# 2. 获取某个单元格 修改值
# sheet['B3'] = '光'
# workbook.save('p2.xlsx')
# cell_list = sheet["B2": 'C3']
# for row in cell_list:
# for cell in row:
# cell.value = '新的值'
# workbook.save('p1.xlsx')
for row in sheet.iter_rows(min_row=5, min_col=1, max_col=7, max_row=10):
for cell in row:
cell.value = 'oo'
workbook.save('p1.xlsx')
r row in sheet.iter_rows(min_row=5, min_col=1, max_col=7, max_row=10):
for cell in row:
cell.value = ‘oo’
workbook.save(‘p1.xlsx’)追问
你确定已经打开的p1.xlsx表,还可以load_workbook("p1.xlsx")?
参考技术A openpyxl 可以读取人已经打开的excel文件,也可以操作单元格赋值等,但是最后一步保存的时候不能和已打开的文件相同,比如已打开的文件a.xlsx,保存的时候你可以换个名字b.xlsx,相同就会报错追问python用load或者open方法等打开的excel表,人可以编辑,python也可以操作。
问的是:人打开的表,python怎么编辑,,,比如人打开了1.xls,2.xls,怎么让python操作已经打开了的1.xls?
以上是关于python操作excel读取数据,如何返回的是gbk的主要内容,如果未能解决你的问题,请参考以下文章
Python应用实战-如何通过python对Excel进行常规性操作