简介:许多朋友询问与Python Saw Excel相关的几行。首席执行官在本文中注明将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
不超过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
划分英文名称非常简单。空间分开。第一部分是名称,第二部分是姓氏。
准备测试数据:
测试数据
打开Pycharm并输入以下代码
代码
运行效果如下:
运行效果显示
附加实施代码:
#!/usr/bin/env Python
导入大熊猫作为pd
openpath ='test.xls'
savepath ='test1.xls'
def total_count(path = openpath,sheetname ='testsheet'):
df = pd.read_excel(路径,sheet_name = sheetname,names = ['value','count'])
#获取统计项目
item_name = set(df ['value'])
#创建字典统计
total_dict = dict(zip([i在item_name中i]
0对于_ in rang(len(item_name)])))))))))))))))))))))))))))
#,一一统计数量
对于索引,枚举(df ['value'])中的项目:
#如果在集合中
如果item_name中的项目:
#添加计数统计信息
total_dict [item] += df ['count'] [index]
# 返回
返回total_dict
def datato_excel(path = savepath,sheet_name ='total',data_dict = {}):
report_df = pd.dataframe.from_dict(data_dict,orient ='index')
xl_writer = pd.excelwriter(路径)
report_df.to_excel(xl_writer,sheet_name)
尝试:
xl_writer.save()
打印(“保存完成”)
除了:
打印(“保存文件中的错误”)
如果__name__ ==“ __ -main __”:
datato_excel(data_dict = total_count())
我不知道这是您想要的结果。如果您有帮助,请采用它,谢谢!
您可以尝试一下。
rowid = sht.usedrange.find(userId).address [1:3]
win32com没有详细的文档。不提及中文。我建议您使用XLRD
这件事不需要win32。还有xlwt等。
如果您必须使用Win32COM,请参考在线MSDN。但是并非所有功能都已实现。
Python的Excel操作是多种多样的,如果您掌握了相关用法,则可以执行的操作数据!
操作XLS文件
XLRD(读取操作):
导入xlrd
1.介绍XLRD模块
workbook = xlrd.open_workbook(“ 36.xls”)
2.打开[36.xls]文件以获取excel文件的工作簿(工作簿)对象
名称= workbook.sheet_names()
3.获取所有床单的名称
工作表= workbook.sheet_by_index(0)
4.通过表索引获取表格对象
工作表是Excel表的第一张表的实例化对象
工作表= workbook.sheet_by_name(“省和城市”)
5.通过表名称获取表格对象
工作表是一个名为[省和城市]实例化对象的Excel表格
nrows = worksheet.nrows
6.获取这张桌子的头数
ncols = worksheet.ncols
7.获取此表的总数
row_data = workshed.row_values(n)
8.获取表的n行的内容
col_data = workshhet.col_values(n)
9.在此表中获取NN列的内容
cell_value = worksheet.cell_value(i,j)
10.在此表中获取行i的J列的单元格内容
XLWT(写作操作):
导入XLWT
1.介绍XLWT模块
book = xlwt.workbook(encoding =“ utf-8”)
2.创建一个工作簿对象,该对象等同于创建Excel文件
表= book.add_sheet('test')
3.创建一个表对象,一个表对象对应于Excel文件中的表单。
sheet.write(i,j,“省和市政”)
4.将“省和城市”写成i -i -i -i -c -column J和J列J
book.save(“数据\ 36.xls”)
5.保存到数据目录[36.xls]文件
操作XLSX文件
OpenPyXl(读取操作):
导入OpenPyXl
1.介绍OpenPyXl模块
Workbook = OpenPyXl.Load_workbook(“ 36.xlsx”)
2.打开[36.xlsx]文件以获取excel文件的工作簿(工作簿)对象
名称= Workbook.SheetNames
工作表= Workbook.worksheets [0]
工作表=工作簿[“省和市政”]
WS = Workbook.Active
6.获取当前的主动锻炼,默认值是第一个讲习班
nrows = worksheet.max_row
7.获取这张桌子的头数
ncols = workshet.max_column
8.获取此表的总数
content_a1 = workshet ['a1']。价值
9.获取表A1的固有形式的内容
content_a1 = worksheet.cell(行= 1,colorn = 1)。价值
10.在此表中获取第一列1的内容
OpenPyXl(写作操作):
Workbook = OpenPyXl.Workbook()工作表= Workbook.Active
3.获取当前的活动工作,默认值是第一个工作表
worgsheet.title =“ [#0#]”
4.工作表的名称设置为“测试”
工作表= workbook.create_sheet()
5.创建一个新的工作表并在默认情况下在工作簿的末尾插入它
worksheet.cell(i,j,'空')
6.行i -i列J的值更改为“空”
工作表[“ b2”] =“空”
7.将B2的值更改为“空”
worksheet.insert_cols(1)
8.在第一列之前插入一列
worksheet.append([“新增加”,“台湾省”])
9.添加银行
workbook.save(“数据\ 36.xlsx”)
10.保存到数据目录[36.xlsx]文件
Pandas Processing Excel文件
熊猫的操作:
导入大熊猫作为pd
1.介绍大熊猫模块
data = pd.read_excel('36 .xls')
2.读取[36.xls]或[36.xlsx]文件
data = pd.read_csv('36 .csv')
3.阅读[36.CSV]文件
data = data.dropna(sub set = ['shop'])
4.过滤数据存储中缺少的数据
data.sort_values(“客户网络名称”,Inplace = true)
5.根据客户网络从小到大的客户网络中对数据进行排序。
data = pd.read_csv(36.csv,skiprows = [0,1,2],sep = none,skipfooter = 4)
6.读取[36.CSV]文件,前三行和后四行的数据略微结束
data = data.fillna('空')
7.将数据中的空白填充为“空”
data.drop_duplicates('order','first',Inplace = true)
8.数据中的数据,按照[订单]列重新处理,保留第一片数据
data = pdataframe(data,colorns = ['order','warehouse'])
9.仅将数据保存在[order] [仓库]列中
data = data [(data [u''显示数量'] 0]
10.在[显示数量]的列中保持数据仅大于0
data = data [data [“ order”] .str.Contains('000')]
11.仅保留[顺序]列中包含“ 000”的数据
data = data [数据[“仓库”] =='真正的仓库']
12.仅保留[仓库]列是“真正仓库”的数据
xs = data [data [“ shop”] =='南极人'] ['sales']
13.获取商店的销售数据
data ['order'] = data ['order'] .str [3:7]
14. [顺序]列的值仅保留4-8个字节的值
data [“ postage”] = np.Where((data ['shop'] .str.contains('t | t'))) - (data ['warehouse'] =='更换位置',8,数据['邮资'])
15.如果商店包括t或t和仓库不等于“付费定位”,则邮费的价值将更改为8,否则价值不会更改
data = np.array(data).tolist()
16.将数据从数据框架转换为列表
data = pd.dataframe(数据)
17.将列表转换为数据框架格式
zhan = data [u'show'] .sum()。(2)
18.寻求和谐数据中的所有数据,并采用两个小数
sum = data.groupby(['shop'])['Brush Order'] .sum()
19.根据商店寻求数据以总结订单
计数=数据['shop']。value_counts()
20.根据商店计算数据
avg = data.groupby(['shop'])['Brush Order'] .Mean()
21.根据商店找到平均数据数量
count = pd.concat([[count,sum],axis = 1,ignore_index = true,sort = true)
22.结合计数和总和的两个数据框
count = count.rename(index = str,colorns = {0:“ order”,1:“ cost”})
23.修改新生成的数据帧名称
data = pd.merge(sum,counts,how ='left',left_on ='shop',right_on ='shop')
24.将列表转换为数据框架格式
来自OpenPyXl Import Workbook
WB = Workbook()
ws1 = wb.active
data.to_excel('36 .xlsx')
wb.close()
25.数据完全写入截止过程中。执行此操作时,[36.xlsx]无法打开
Excel格式操作
样式处理:
1.打开[36.xlsx]
工作表=工作簿。工作表[0]
2.将第一个纸对象分配给工作表
sheet.column_dimensions ['a']。宽度= 20.0
3.将A的宽度设置为20
sheet.Row_dismensions [1] .height = 20.0
4.将第一行的高线设置为20
sheet.merge_cells('a1:a2')
5.合并表A1和A2单元格
Sheet.unmerge_cells('a1:a2')
6.取消表A1和A2单元格并合并
sheet.insert_rows(2,2)
7.将表格表从第2行插入第2行中
sheet.insert_cols(3,2)
8.将表格表从第3列插入列3列3
Sheet.Delete_rows(2)
9.删除行2
Sheet.delete_cols(3,2)
10.从第3列删除表格表
来自OpenPyXl。毫无式的进口字体,边框,图案填充,颜色,对齐方式
11.引入字体,帧,图案填充,颜色,对齐方式
sheet.cell(i,j).font = font(name ='times new roman',size = 14,bold = true,color = colors.white)
12.设置表格表I的第一行的字体
sheet.cell(i,j).lignment =对齐(Horizontal ='Center',垂直='Center'))
13.设置表格i的第一行的字体对齐方法
左,右,底部,底部= [side(style ='thin',color ='000000')] * 4sheet.cell(i,j).border = border = border = border(左=左,右=右=右,top = top = top,底部=底部)
14.介绍边境风格并致电
file = atteratufull(“ solid”,fgcolor =“ 1874cd”)sheet.cell(1,j).fill = file
15.介绍填充风格并致电
导入xlrd
来自OpenPyXl Import Workbook
来自OpenPyXl import load_workbook
workbook = load_workbook(filename ='c:/users/edz/desktop/work/2021.08.03/ big Brother .xlsx')
工作表=工作簿
sheet.insert_cols(idx = 1)
Sheet.Merge_Cells(A1:A3)
表['a1'] = ['上海','shandong','zhejiang']
随着软件继续升级,该功能也在增加。然后,这取决于Excel中的工作表有多少线。我应该做什么?让我教您如何查看excel有多少行,我希望它对您有所帮助!
看看有多少行Excel是1
打开一个工作表。您可以在工作表的左下角单击带有三角形的小图标,以向下移动液体栏,显示工作表的最后一行或最后一列。您可以看到多少行,但是此方法是更多时间 - 耗费。
查看工作表中有多少行。最快的方法是按CTRL+DOWN CURSOR键,一次可以显示最后一行。您可以看到您拥有多少行。
按照相同的原理,按CTRL+右光标键移动到最后一列。但是,看到的列是字母的组合。(XFD),如果您想返回到第一列,请使用CTRL+到左轻键。
您还可以查看Excel的自动填充功能。首先选择A列,输入数字1,然后直接按CTRL+ENTER按钮。它将自动填充A列中的所有单元格至1。您可以看到状态栏中有多少行计数。
以相同的方式查看列。选择1行,然后在输入后按Ctrl+Enter键。1。通过状态栏可以看到许多列。
看看有多少行Excel有2种方法2
还有一种查看列,打开Excel选项并检查公式中的[R1C1参考样式]的方法,以便将工作表的列以数字方式显示。
然后,将组合的键CTRL+在左侧光标键中查看最后一行的值。
你也许也喜欢:
1.如何复制单词教程
2.除了许多教程以外的所有数据
3.如何使用Excel执行统计方法
4.计算Excel总数的方法
5. 2013年版的Excel视图正在运行的工作表中有多少等级
6.在Excel中设置显示等级的教程
7. Excel中显示表格编号的操作技巧
8.如何查看网络数据
我不知道您要问您要做什么的问题。
判断不是空的。代码如下:
来自OpenPyXl import load_workbook
wb = load_workbook(filename = r'read path .xlsx')##阅读路径
ws = wb.get_sheet_by_name(“ Sheep1”)## Sheep1名称的表格表
num = 1
而1:#set作为死周期
cell = ws.cell(row = num,colorn = 1)。价值
如果细胞:
num = num +1
别的:
打印(num)
出口 ()
运行结果(已删除了我的路径):
结论:以上是首席CTO的全部内容,请注意我在Python上写了多少条线以查看Excel。感谢您阅读ContentDo,不要忘记找出有多少行相关内容。