简介:许多朋友询问有关Python出口Excel的有多少相关问题。首席执行官在本文中注明将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
1.数据查询方法(可以根据实际业务需求更改此项目)
其次,数据生成Excel
3.介绍发送电子邮件方法
导出Excel遇到以下图中的错误:
1.检查编码#coding:utf-8 sys.setdefaultencoding('utf8'),等。
2.用第一行数据写的汉字,或者字符串需要引号,并且将报告错误。
不超过100行
最近,我想帮助正在做RA的姐姐编写合并Excel工作表的脚本...源数据为4000+ Excel工作表,这些工作表分布在9 XLSM文件中。提取的必需部分合并进入多个大桌子。
查找工具
确定任务后,第一步是找到一个可以正常工作的库。python excel列出了xlrd,xlwt,xlutils袋,但是
它们年龄较大,XLWT甚至不支持07版本的Excel
他们的文档不是很友好,他们可能需要阅读源代码,并且姐姐的任务相对紧张。此外,在此期间结束时,没有这个时间没有时间阅读源代码。
再次搜索后,我找到了OpenPyXl并支持07+ Excel。有人一直被维护。这些文档清晰易读。请参阅教程和API文档以尽快开始,就是?
安装
这很容易,pip安装openpyxl,哈哈?
因为我不需要处理图片,所以我不安装枕头。
一些考虑
源文件的大约一到2MB相对较小,因此可以将其直接读取到内存处理中。
由于它正在处理Excel,更不用说整个小组显然是赢得工作(数据存储在业务商人中...
此任务根本不需要我完全修改现有文档!囧...我只需要阅读,处理并编写另一个文件
学习和使用
好吧,只需打开CMD,然后使用Python的Shell播放此模块各种模块...(我没有在Win下安装Ipython,囧)
从基本上我只需要这两件事,做这个小脚本
从OpenPyXl导入workbook从OpenPyXl import load_workbook
顾名思义,load_workbook将文件导入内存。工作簿是用于在内存中创建文件并最终编写磁盘的最基本类。
工作
首先,我需要导入此文件
inwb = load_workbook(文件名)
您得到的是一个工作簿对象
然后我需要创建一个新文件
OUTWB = Workbook()
然后在这个新文件中,创建一些带有create_sheet的新工作表,例如
CareerSheet = OUTWB.CREATE_SHEET(0,“职业”)
它将从头部插入一个名为“职业”的工作表(即使用Python列表)
接下来,我需要遍历输入文件中的每个工作表,并根据表名称执行一些作业(例如,如果表名不是数字,我不需要处理),OpenPyXl支持以通过表名称为字典,并获得一个以获取一个工作簿表名的方法的词语,为get_shed_names
对于inwb.get_sheet_names()中的SheepName:如果不是SheetName.isdigit():继续
sheet = inwb [sheetname]
获得工作表后,它将通过列和行处理。OpenpyXl将根据工作表中的实际数据确定行和列的数量。获取行和列的方法是表格和表格。它们都可以像列表一样使用。例如,如果我想用少于2列跳过表,我可以写
如果len(表格列)2:继续
如果我想获得此工作手表的前两列,我可以写
可乐,colorb = sheet.columns [:2]
除了使用列和行以获取此工作表的排名外,您还可以使用Excel的单元格编码来获取区域,例如
细胞=板['a1':'b20']
有点像Excel自己的功能,您可以拔出两个维度区域?
为了促进处理处理,当遇到没有C列的工作表时,我想创建一个空的C -columns,例如A列A,然后我可以使用Sheet.cell方法传递单元格数并通过传递通过单元号并添加空值。
alen = len(可乐)在范围内(1,alen + 1):
sheet.cell('c%s'%(i))。值=无
注意:Excel的单位名称从1?开始
还显示了上述代码,并且使用单元格的获取值为单元格(可以左右或右)。Excel文件还生成相应的数据类型。
获得每个单元格的值后,您可以操作它?OpenPyXl将使用它与Unicode编码字符串,因此字符串全部在Unicode类型中。
除了用单元格修改值。一个一个逐一的值,您还可以走到工作表上的一行附加行
Sheet.Append(Stra,dateB,numc)
最后,等待新文件编写,只需使用workbook。直接保存。
OUTWB.SAVE(“ test.xlsx”)
这将涵盖当前文件,甚至您之前阅读的文件。
一些值得关注的地方
如果您想在列中遍历每个单元格时将当前单元格在此列对象中
对于IDX,枚举(可乐)中的单元格:#做某事...
为了防止获得的数据的两端(Excel文件中的公共坑)在两端的不可见空间,请记住strip()
如果工作表中的单元格没有数据,则OpenPyXl将无需使其值无效,因此,如果要处理单元格的值,则不能提前假设它,最好使用它
如果不是单元格。
句子喜欢首先判断
例如,如果要处理Excel文件中的噪声很多,例如,当您期望单元格是时间时,某些表数据可能是字符串。此时
如果是isInstance(cell.value,unicode):中断
句子,例如语句。
WIN下的CMD似乎没有使用UTF-8设置代码页面。如果简化中文,则可以使用936(GBK)。打印时,它将自动从Unicode转换为GBK输出到终端。
一些小型功能可以帮助解决中国问题
我所处理的表具有超过GBK范围的一些字符。当我需要将一些信息比较以监视处理进度时,我可以忽略它。我可以使用该空间来替换它。我必须替换的某些分离器,我可以::
#烦人的seperatorsdot = u'·'dash = u' - 'emph = u'?'dot2 = u'seps =(u'。
用法:
cleanString = get_clean_ch_string(chstring)“”“”“”“”
cleanstring = sep中的sep的chstring:
cleanstring = cleanstring.replace(sep,u'')返回清洁串
此外,我还需要将英文名称[Space]中文名称分为英语姓氏,英文名称,中文姓氏和中文名称。
首先,我需要能够分割英语和中文。我的方法是定期匹配,并遵循Unicode范围内常见的汉字范围。与英语和中文匹配的图案如下:如下:
一-。%s]+'%(''.join(seps))
英语被ASCII印刷字符取代。普通汉字的范围是一?。sep是以前超过GBK范围超过的一些字符。除了简单的细分外,我还需要处理唯一没有英文名称的中文名称,唯一没有中文名称的英语名称等。判断的逻辑是如下:
def split_name(名称):“ split [英语名称,中文名称]。
如果其中一个缺少,则不会返回。
用法:
endMe,chname = split_name(name)“”
匹配= re.Match
return matches.group(1).strip(),matches.group(2).strip()else:
匹配= re.findall('(%s)'%(中文eptersn),名称)
匹配='''。加入(比赛)。strip()如果匹配:#仅中文名称
返回无,匹配其他:##仅英语名称
匹配= re.findall('(%s)'%(asciipattern),name)return'.join(matches).strip(),无
获得中文名称后,我需要将其分为姓氏和名称,因为任务要求不需要清楚地划分名称,因此我将根据普通的中文名称对其进行分配。这个词是姓氏。这四个字符的前两个单词是姓氏。具有名称区域的名称(少数民族的名称)是姓氏(在此处删除get_clean_ch_string函数以删除分隔符),并且名称更长。假设整个字符串命名为命名。(请注意英语的名字是指该名称,姓氏是指姓氏2333)
def split_ch_name(chname):“”“将中文名称int名称和姓氏分开。
*如果名称为xy或xyz,则x将返回为姓氏。
*如果名称为wxyz,则WX将被命名为姓氏。
*如果名称为... wxyz,将返回谁的名字
作为姓氏。
*如果名称为.. abc * xyz ...,Seperator之前的部分
将作为姓氏返回。
用法:
chfirsname,chlastname = split_ch_name(chname)“”
如果len(chname)4:#xy或xyz
chlastname = chname [0]
chfirstname = chname [1:] elif len(chname)== 4:#wxyz
chlastname = chname [:2]
chfirstname = chname [2:] else:#更长
cleanname = get_clean_ch_string(chname)
nameparts = cleanname.split()
返回无,姓名[0]
chlastname,chfirstname = nameparts [:2]#.. abc * xyz ...
返回基金会,chlastname
划分英文名称非常简单。空间分开。第一部分是名称,第二部分是姓氏。
如何使用Python将大量数据导出到Excel中的提示
(1)问题描述:为了更好地显示数据,以Excel格式的数据文件通常比文本文件更有利,但是如何将数据导出到Python中的Excel?如果我需要大量导出,该怎么办数据?本文主要解决上述两个问题。
(2)具体步骤如下:
1.在第一步中,安装openpyxl,
只需使用PIP安装OpenPyXl,但它安装在Windows版本2.2.6中,但是CentOS自动安装了4.1版(感谢Haige的提醒)。
编写的代码在Windows下运行时没有问题,但是它在CentOS上报告了一个错误,称它是EW = ExcelWriter(Workbook = WB)的参数更少,因此我在237服务器上安装了2.2.6版,并且问题解决了。
PIP安装OpenPyXl == 2.2.6
2.步骤2,哈哈,不,让我们不要直接在代码,PS上谈论废话,代码包含两个实现版本的XLWT和OpenPyXl。
(3)扩展阅读:通过查看信息,我发现互联网上有不同的意见。
有两组与Python Excel相关的模块LIB相关操作,一个组为XLRD,XLWT,Xlutils,另一组为OpenPyXl,
但是,以前的组(XLRD,XLWT)较旧,只能处理Excel 97-2003或Excel 97之前的XLS格式的Excel文件,XLWT甚至在版本07之后都不支持Excel文件。一般而言,一般而言说话。最大值只能用256列或65536行支持Excel文件。
因此,面对要出色的大量数据,您将拥有以下三个选项。XLSM格式的处理(3)win32 com(仅Windows)
当然,我们必须面对困难。为了更好地向产品和用户显示数据,我们仍然选择第二种类型。
PS,很幸运。搜索后,我找到了OpenPyXl并支持07+ Excel。有人一直被维护。这些文档清晰易读。请参阅教程和API文档以尽快入门,也就是说?
(4)更少的八卦,只需直接应用代码,请参考
#编码:UTF-8
'''
#我希望这对每个人都会有所帮助,请提及更多问题
由Yaoyz创建
日期:2017/01/24
'''
导入xlrd
导入XLWT
#与工作簿有关
来自OpenPyXl.Workbook Import Workbook
#excelwriter,封装了强excel的功能
来自OpenPyxl.Writer.excel Import ExcelWriter
#一种将Eggache数量转换为字母的方法
来自openpyxl.utils import_column_letter
来自OpenPyxl.Reader.excel import load_workbook
class handle excel():
'Excel相关操作类'''
def __init __(自我):
自己。head_row_labels = [u'学生id',u'学生名称',u'联系信息',u'知识点ID',u'知识点名称']]
”“”
功能:
在TXT文件中读取每个记录并将其保存在列表中
参数:
文件名:要读取的文件名
返回:
res_list:记录记录列表
”“”
defud_from_file(SELD,文件名):
res_list = []
file_obj = open(文件名,“ r”)
对于file_obj..readlines()中的行:
res_list.append(行)
file_obj.close()
返回res_list
”“”
功能:
在*.xlsx中读取每个记录,然后将其保存在data_dic中并返回
参数:
excel_name:要读取的文件名
返回:
data_dic:返回记录的dict
”“”
def read_excel_with_openpyxl(self,excel_name =“ testexcel2007.xlsx”):
#阅读Excel2007文件
wb = load_workbook(filename = excel_name)
#显示有多少桌子可用
打印“工作表范围:”,wb.get_named_ranges()
打印“工作表名称:”,WB.Get_Sheet_names()
#拿第一张桌子
SheepNames = wb.get_sheet_names()
ws = wb.get_sheet_by_name(SheepNames [0])
#显示表名,表行的数量,表格数量
打印“工作表titile:”,ws.title
打印“工作表行:”,ws.get_highes_row()
打印“工作表颜色:”,ws.get_highes_column()
#获得了多少行Excel表单以及多少列
row_num = ws.get_highest_row()
col_num = ws.get_highes_column()
打印“ row_num:”,row_num,“颜色
#存储数据字典
data_dic = {}
标志= 1
#将数据留在字典中
对于ws.Rows中的行:
temp_list = []
#打印“行”,行
对于单元格:
打印单元格。
temp_list.append(cell.value)
“打印” ”
data_dic [sign] = temp_list
标志+= 1
打印data_dic
返回data_dic
”“”
功能:
在*.xlsx中读取每个记录,然后将其保存在data_dic中并返回
参数:
记录:保存,包含每个记录的列表
save_excel_name:保存的文件名
head_row_stu_arrive_star:
返回:
data_dic:返回记录的dict
”“”
def write_to_to_excel_with_openpyxl(self,记录,head_row,save_excel_name =“ save.xlsx”)):
##
WB = Workbook()
##
ew = excelwriter(workbook = wb)
#设置文件输出路径和名称
des_filename = save_excel_name.decode('utf-8')
#第一张纸是WS
WS = WB.Worksheets [0]
#设置WS的名称
ws.tital =“范围名称”
#,标题行
对于范围内的H_x(1,Len(Head_row)+1):
h_col = get_column_letter(h_x)
#print H_COL
ws.cell('%s%s'%(H_COL,1))。值='%s'%(head_row [h_x-1])
#写第二行和将来的行
i = 2
记录中的记录:
record_list = str(record).strip()。分裂 (””)
对于x范围(1,len(record_list)+1):
col = get_column_letter(x)
ws.cell('%s%s'%(颜色))。value ='%s'%(record_list [x-1] .decode('utf-8'))))))))
i += 1
#写写
ew.save(filename = dest_filename)
”“”
功能:
测试输出Excel内容
阅读Excel文件
参数:
excel_name:要读取的excel文件名
返回:
没有任何
”“”
def read_excel(self,excel_name):
workbook = xlrd.open_workbook(excel_name)
打印Workbook.shed_names()
#获取所有工作表
打印workbook.sheet_names()#[u'sheet1',u'sheet2']
sheet2_name = workbook.sheet_names()[1]
#Che Sheet Contentiat the Sheet Index或name
Sheet2 = Workbook.sheet_by_index(1)#Sheet Index从0开始
sheet2 = workbook.sheet_by_name('Sheet1')
#表的名称,行号,列号
proprint sheep2.Name,Sheep2.nrows,Sheet2.ncols
#获取整行的值和整列(数组)
行= Sheet2.Row_Values(3)#获取第四行的内容
color = sheet2.col_values(2)#获取第三列的内容
打印行
印刷上校
#内容内容
打印表22.cell(1,0)。价值
打印表22.Cell_value(1,0)
打印表22.Row(1)[0]。价值
#内容数据类型
proprint Sheet22.Cell(1,0).ctype
#通过通过
返回workbook.sheet_by_name(u'sheet1')
”“”
功能:
设置手机样式
参数:
名称:字体名称
高度:字体高度
大胆:是否大写
返回:
样式:返回设定格式对象
”“”
def set_style(self,name,height,bold = false):
样式= xlwt.xfstyle()#初始化示例
font = xlwt.font()#用于创建样式的字体
font.name =名称#'泰晤士报新罗马'
font.bold =粗体
font.color_index = 4
font.height =高度
borders = xlwt.borders()
borders.left = 6
borders.richt = 6
borders.top = 6
borders.bottom = 6
style.font =字体
style.borders =边界
返回样式
”“”
功能:
根据设置单元格样式将计算结果从TXT转换为Excel存储
参数:
数据集:要保存的结果数据,列表存储
返回:
将结果保存为Excel对象
”“”
def write_to_excel(self,dataset,save_excel_name,head_row):
f = xlwt.workbook()#创f f f f f f f f f f f f f f f f f f f f f f f f f F
#创建第一张表:
#Sheet1
计数= 1
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok = true)#创建表格
#首首:
对于范围的P(len(head_row)):
sheet1.write(0,p,head_row [p],self.set_style('times new roman',250,true))
default = self.set_style('times new roman',200,false)#定义样式解出循环将工作
对于数据集中的行:
row_list = str(line).strip(“”
“) 。分裂 (” ”)
对于范围的PP(len(str(line).Strip)(“”
“) 。分裂 (” ”))):
sheet1.write(count,pp,row_list [pp] .decode('utf-8'),默认值)
计数+= 1
f.save(save_excel_name)#保存文件
def run_main_save_to_to_excel_with_openpyxl(self):
打印“测试并在2007年及以后编写Excel文件XLSX,以方便编写更多数据”
打印“ 1.将TXT文件读取到内存中,并使用列表对象存储”
dataset_list = self.read_from_file(“ test_excel.txt”)
''测试使用OpenPyXl来处理Excel 2007''''
打印“ 2.将文件写入Excel表”
head_row_label = self.head_row_labels
save_name =“ test_openpyxl.xlsx”
self.write_to_excel_with_openpyxl(dataset_list,head_row_label,save_name)
“打印” 3.执行后,从TXT格式文件保存到Excel文件的任务”
def run_main_save_to_to_excel_with_xlwt(self):
打印“ 4.将TXT文件读取到内存中,并使用列表对象存储”
dataset_list = self.read_from_file(“ test_excel.txt”)
''测试使用XLWT处理Excel 97-2003''''
打印“ 5.将文件写入Excel表””
head_row_label = self.head_row_labels
save_name =“ test_xlwt.xls”
self.write_to_excel_with_openpyxl(dataset_list,head_row_label,save_name)
“打印” 6.执行后,从TXT格式文件保存到Excel文件的任务”
如果__name__ =='__ main __':
打印“创建手柄excel对象”
obj_handle_excel = handleexcel()
#使用OpenPyXl和XLWT将数据写入文件
obj_handle_excel.run_main_save_to_to_excel_with_openpyxl()
obj_handle_excel.run_main_save_to_to_excel_with_xlwt()
'''测试读取文件,请注意,OpenPyXl无法读取XLS的文件,XLRD无法读取XLSX格式的文件'''''''
#obj_handle_excel.read_excel_with_openpyxl(“ testexcel2003.xls”)#
#obj_handle_excel.read_excel_with_openpyxl(“ testexcel2003.xls”)#
obj_handle_excel.read_excel(“ testexcel2003.xls”)
obj_handle_excel.read_excel_with_openpyxl(“ testexcel2007.xlsx”)
其中,dfname是dataframe文件名,以及excel_contents的excel存储路径,例如:'d:test.xlsx。
【回答】不
最大的旅行是1048576。
新文件有1048576行。
如果新构建的文件未达到此限制,则可以如下操作:
1.单击左上角的Office图标,以单击“ pop -up”菜单中的“ Excel选项”按钮
2.单击“ Excel选项”对话框左侧的“保存”选项卡
3.然后将“保存工作簿”下方的文件更改为“保存文件为格式”后面的“ Excel Workbook(*.xlsx)”。
4.再次重新启动Excel。新文件有1048576行。
结论:以上是首席CTO注释所编写的Excel Excel Excel中最多的内容。感谢您花时间阅读内容,不要忘记在此网站上找到它。