Python对Excel操作教程
excel 中python用法
一、介绍Excel是一款广泛使用的电子表格软件,Python是一种流行的编程语言。
结合Excel和Python的使用可以提高数据处理的效率和灵活性。
本文将介绍在Excel中使用Python的方法和技巧。
二、Python插件安装1. 打开Excel并进入“文件”菜单。
2. 选择“选项”。
3. 在选项对话框中,选择“加载项”。
4. 点击“Excel加载项”下的“转到”按钮。
5. 在“添加-Ins”对话框中,点击“浏览”。
6. 找到并选择Python插件的安装文件,点击“打开”。
7. 完成安装并重启Excel。
三、使用Python进行数据处理1. 在Excel中新建一个工作表。
2. 在需要进行数据处理的单元格输入Python函数,例如“=Py.COUNTIF(A1:A10,">5")”。
3. 按下Enter键,Excel会调用Python插件执行该函数,并在单元格中显示结果。
四、Python函数示例1. 使用Python的COUNTIF函数统计大于5的数据个数。
2. 使用Python的SUM函数计算数据的总和。
3. 使用Python的AVERAGE函数计算数据的平均值。
4. 使用Python的IF函数进行条件判断。
5. 使用Python的VLOOKUP函数进行数据查找。
五、Python脚本执行1. 在Excel中打开一个工作表。
2. 点击“开发人员”选项卡。
3. 选择“插入”下的“ActiveX 控件”。
4. 在工作表中插入一个按钮控件,右键点击该按钮并选择“属性”。
5. 在“单击”事件中绑定Python脚本文件。
6. 点击按钮执行Python脚本,实现自定义的数据处理逻辑。
六、Python图表生成1. 在Excel中选择需要生成图表的数据范围。
2. 点击“插入”选项卡中的“插入统计图表”按钮。
3. 在弹出的对话框中选择“Python图表”。
4. 根据需要选择图表类型和样式,点击确定生成图表。
python读取数据写入excel的四种操作
python读取数据写⼊excel的四种操作Python对Excel的读写主要有:xlrd、xlwt、xlutils、openpyxl、xlsxwriter⼏种xlutils结合xlrd: 操作的是以xls后缀的excel,读取⽂件保留原格式:加:formatting_info=True常⽤⽅法:1、打开xls:open_workbook(filePath)2、 x1.sheet_names() # 获取所有sheet名字3、 x1.nsheets # 获取sheet数量4、 x1.sheets() # 获取所有sheet对象5、 x1.sheet_by_name("test") # 通过sheet名查找6、 x1.sheet_by_index(3) # 通过索引查找⼀、xlutils结合xlrd可以达到修改excel⽂件⽬的import xlrdfrom xlutils.copy import copyworkbook = xlrd.open_workbook(u'有趣装逼每⽇数据及趋势.xls',formatting_info=True)workbooknew = copy(workbook)ws = workbooknew.get_sheet(0)ws.write_merge(1,1,2,2,'测试测试',style)ws.write(3, 0, 'changed!')workbooknew.save(u'有趣装逼每⽇数据及趋势copy.xls')⼆、xlwt操作的是以xls后缀的excelimport xlwtwk = xlwt.Workbook()sheet = wk.add_sheet('sheet 1')#创建⼀个sheet1sheet.write(0,1,'test text')#第0⾏第⼀列写⼊内容wk.save('test1.xls')三、xlsxwriter 操作的是xlsximport xlsxwriterworkbook = xlsxwriter.Workbook('demo1.xlsx') # 创建⼯作簿并添加⼯作表worksheet = workbook.add_worksheet()worksheet.write('A1', 'Hello world')# 写⼊数据到A1worksheet.merge_range('B4:D4', 'Merged text', merge_format) #合并单元格,⽅法2worksheet.merge_range(3, 1, 3, 3, 'Merged Range', merge_format)format1 = worksheet.add_format({"bold": True}) #写⼊样式worksheet.write(row,1,'=SUM(B1:B4)') #写⼊公式workbook.close() # 关闭excel⽂件四、openpyxl:openpyxl可以对excel⽂件进⾏读写操作,xlsxfrom openpyxl import Workbookfrom openpyxl import load_workbookfrom openpyxl.writer.excel import ExcelWriterworkbook = load_workbook(u"新歌检索失败1477881109469.xlsx") sheetnames =workbook.get_sheet_names() #获得表单名字sheet = workbook.get_sheet_by_name(sheetnames[0])sheet['A1'] = '47'workbook.save(u"新歌检索失败1477881109469_new.xlsx")wb = Workbook()ws = wb.activews['A1'] = 4wb.save("新歌检索失败.xlsx")案例from openpyxl import Workbookfrom openpyxl import load_workbookfrom openpyxl.writer.excel import ExcelWriterworkbook = load_workbook(u'F:\excel_test.xlsx')worksheet = workbook.get_sheet_by_name('Sheet1') worksheet['A1'] = '12321321312'workbook.save(u'F:\EXCEL_new.xlsx')。
python xlsx操作方法
python xlsx操作方法【原创版3篇】目录(篇1)1.Python 操作 Excel 的基本方法2.xlsx 模块的使用3.读取和写入 Excel 文件的实例正文(篇1)在 Python 中,操作 Excel 文件是一种常见的任务。
Python 提供了多种方法来实现这一目标,其中最常用的方法是使用 pandas 库和openpyxl 库。
本文将介绍如何使用 xlsx 模块来操作 Excel 文件。
首先,需要安装 xlsx 模块。
可以使用以下命令来安装:```pip install openpyxl```安装完成后,可以使用以下代码来读取 Excel 文件:```pythonimport openpyxl# 打开工作簿workbook = openpyxl.load_workbook("example.xlsx")# 获取工作表sheet = workbook.active# 读取单元格数据cell_value = sheet["A1"].value# 读取一行数据row_values = [cell.value for cell in sheet["A1:C1"]]# 读取一列数据column_values = [cell.value for cell in sheet["A"]]# 读取指定范围内的数据range_values = [[cell.value for cell in row] for row in sheet["A1:C3"]]```接下来,可以使用以下代码来写入 Excel 文件:```pythonimport openpyxl# 创建新的工作簿workbook = openpyxl.Workbook()# 获取活动工作表sheet = workbook.active# 写入单元格数据sheet["A1"] = "Hello, World!"# 写入一行数据row_values = ["Name", "Age", "City"]for col_num, value in enumerate(row_values, start=1): sheet.cell(row=1, column=col_num, value=value)# 写入一列数据column_values = [1, 2, 3, 4, 5]for row_num, value in enumerate(column_values, start=1): sheet.cell(row=row_num, column=1, value=value)# 保存工作簿workbook.save("output.xlsx")```通过以上示例,可以了解如何使用 xlsx 模块来读取和写入 Excel 文件。
Python对Excel操作用法详解
Python对Excel操作⽤法详解在python中,对excel表格读,写,追加数据,⽤以下三个模块:1、xlrd 读取excel表中的数据2、xlwt 创建⼀个全新的excel⽂件,然后对这个⽂件进⾏写⼊内容以及保存。
3、xlutils 读⼊⼀个excel⽂件,然后进⾏修改或追加,不能操作xlsx,只能操作xls。
⼀、读excel表读excel要⽤到xlrd模块1、导⼊模块 import xlrd2、打开excel⽂件table = data.sheets()[0] #通过索引顺序获取table = data.sheet_by_index(0) #通过索引顺序获取table = data.sheet_by_name(u'Sheet1')#通过名称获取代码如下:import xlrddata = xlrd.open_workbook(r"C:\Users\907968\Desktop\test.xlsx")table1 = data.sheets()[0]table2 = data.sheet_by_index(0)table3=data.sheet_by_name(u'Sheet1')print(table1)print(table2)print(table3)返回:<xlrd.sheet.Sheet object at 0x0000000002F7F208><xlrd.sheet.Sheet object at 0x0000000002F7F208><xlrd.sheet.Sheet object at 0x0000000002F7F208>3、获取⾏数和列数import xlrddata = xlrd.open_workbook(r"C:\Users\907968\Desktop\test.xlsx")table = data.sheets()[0]nrows = table.nrowsncols = table.ncolsprint("⾏数:%d\n列数:%d"%(nrows,ncols))返回:⾏数:13列数:34、获取整⾏和整列的值,以列表形式返回rows = table.row_values(0)cols = table.col_values(0)print("rows:%s\ncols:%s"%(rows,cols))返回:rows:['A1', 'B1', 'C1']cols:['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10', 'A11', 'A12', 'A13']5、获取单元格数据cell_A1 = table.cell_value(0,0)cell_C4 = table.cell_value(3,2)print("A1:%s\nC4:%s"%(cell_A1,cell_C4))返回:A1:A1C4:C4还可以使⽤⾏列索引来获取单元格数据cell_A1 = table.row(0)[0].valuecell_C4 = table.col(2)[3].valueprint("A1:%s\nC4:%s"%(cell_A1,cell_C4))返回:A1:A1C4:C4三、写excel操作1、导⼊:import xlwt2、创建workbookworkbook = xlwt.Workbook(encoding='utf-8', style_compression=0)encoding:设置字符编码,⼀般要这样设置:w = Workbook(encoding=’utf-8’),就可以在excel中输出中⽂了。
python excel 单元格格式
Python是一种功能强大的编程语言,其在处理Excel文件方面有着很高的适用性。
本文将介绍Python在处理Excel单元格格式方面的用法和技巧。
一、使用openpyxl库处理单元格格式1.安装openpyxl库使用pip命令可以很方便地安装openpyxl库。
```pythonpip install openpyxl```2.导入openpyxl库在Python代码中使用import语句导入openpyxl库。
```pythonimport openpyxl```3.打开Excel文件使用openpyxl.load_workbook()函数可以打开一个Excel文件,并返回一个workbook对象,以供后续操作。
```pythonworkbook = openpyxl.load_workbook('example.xlsx')```4.选择工作表通过workbook对象的get_sheet_by_name()方法或者active属性可以选择一个工作表。
```pythonsheet = workbook.active```5.设置单元格格式通过使用openpyxl库中的各种属性和方法,可以对单元格的格式进行修改。
比如设置字体样式、颜色、大小,设置边框样式和颜色,设置单元格的对齐方式等。
二、使用xlrd和xlwt库处理单元格格式1.安装xlrd和xlwt库同样使用pip命令可以安装xlrd和xlwt库。
```pythonpip install xlrdpip install xlwt```2.导入xlrd和xlwt库在Python代码中使用import语句导入xlrd和xlwt库。
```pythonimport xlrdimport xlwt```3.读取Excel文件使用xlrd库中的open_workbook()函数可以打开一个Excel文件,并返回一个workbook对象,以供后续操作。
使用python操作excel
使⽤python操作excel使⽤python操作excelpython操作excel主要⽤到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
安装xlrd模块#pip install xlrd使⽤介绍常⽤单元格中的数据类型 empty(空的) string(text) number date boolean error blank(空⽩表格) empty为0,string为1,number为2,date为3,boolean为4, error为5(左边为类型,右边为类型对应的值)导⼊模块import xlrd打开Excel⽂件读取数据data = xlrd.open_workbook(filename[, logfile, file_contents, ...])#⽂件名以及路径,如果路径或者⽂件名有中⽂给前⾯加⼀个r标识原⽣字符。
#filename:需操作的⽂件名(包括⽂件路径和⽂件名称);若filename不存在,则报错FileNotFoundError;若filename存在,则返回值为xlrd.book.Book对象。
常⽤的函数 excel中最重要的⽅法就是book和sheet的操作# (1)获取book中⼀个⼯作表names = data.sheet_names()#返回book中所有⼯作表的名字table = data.sheets()[0]#获取所有sheet的对象,以列表形式显⽰。
可以通过索引顺序获取,table = data.sheet_by_index(sheet_indx))#通过索引顺序获取,若sheetx超出索引范围,则报错IndexError;若sheetx在索引范围内,则返回值为xlrd.sheet.Sheet对象table = data.sheet_by_name(sheet_name)#通过名称获取,若sheet_name不存在,则报错xlrd.biffh.XLRDError;若sheet_name存在,则返回值为xlrd.sheet.Sheet对象以上三个函数都会返回⼀个xlrd.sheet.Sheet()对象data.sheet_loaded(sheet_name or indx)# 检查某个sheet是否导⼊完毕,返回值为bool类型,若返回值为True表⽰已导⼊;若返回值为False表⽰未导⼊# (2)⾏的操作nrows = table.nrows#获取该sheet中的有效⾏数table.row(rowx)#获取sheet中第rowx+1⾏单元,返回值为列表;列表每个值内容为:单元类型:单元数据table.row_slice(rowx[, start_colx=0, end_colx=None])#以切⽚⽅式获取sheet中第rowx+1⾏从start_colx列到end_colx列的单元,返回值为列表;列表每个值内容为:单元类型:单元数据table.row_types(rowx, start_colx=0, end_colx=None)#获取sheet中第rowx+1⾏从start_colx列到end_colx列的单元类型,返回值为array.array类型。
python中openpyxl和xlsxwriter对Excel的操作方法
python中openpyxl和xlsxwriter对Excel的操作⽅法前⼏天,项⽬中有个⼩需求:提供Excel的上传下载功能,使⽤模块:openpyxl和xlsxwriter,这⾥简单记录⼀下。
1.简介Python中操作Excel的库⾮常多,为开发者提供了多种选择,如:xlrd、xlwt、xlutils、xlwings、pandas、win32com、openpyxl、xlsxwriter等等。
其中:前三个⼀般混合使⽤,对Excel读写操作,适合旧版Excel,仅⽀持 xls ⽂件;win32com库功能丰富,性能强⼤,适⽤于Windows;xlwings稍次于前者,但同样功能丰富;pandas适合处理⼤量数据;xlsxwriter适合⼤量数据的写操作,⽀持图⽚/表格/图表/筛选/格式/公式等;openpyxl读写均可,简单易⽤,功能⼴泛,可插⼊图表等,类似前者。
以下主要描述⼀下后两种(openpyxl、xlsxwriter)的简单使⽤2.Excel库的使⽤2.1.⽬标2.2.openpyxl的使⽤2.2.1.安装pip install openpyxl2.2.2.写⼊Excelimport osfrom openpyxl import Workbookfrom openpyxl.styles import Alignment, Font, colors, PatternFillfrom openpyxl.utils import get_column_letterFILE_PATH = os.path.join(os.path.dirname(__file__), 'files/')def write_test():wb = Workbook()filename = FILE_PATH + '/openpyxl_test.xlsx'# 活动sheetws1 = wb.activews1.title = "Test-1"# 列表追加for row in range(1, 10):ws1.append(range(9))# 创建sheetws2 = wb.create_sheet(title="Test-2")# 合并单元格ws2.merge_cells('F5:I5')# 拆分# ws2.unmerge_cells('F5:I5')# 单元赋值ws2['F5'] = 'hello world'# 居中ws2['F5'].alignment = Alignment(horizontal='center', vertical='center')# sheet标签颜⾊ws2.sheet_properties.tabColor = '1072BA'# 字体样式bold_itatic_12_font = Font(name='仿宋', size=12, italic=True, color=BLUE, bold=True)ws2['F5'].font = bold_itatic_12_font# 背景颜⾊bg_color = PatternFill('solid', fgColor='1874CD')ws2['F5'].fill = bg_color# ⾏⾼列宽ws2.row_dimensions[5].height = 40 # 第 5 ⾏ws2.column_dimensions['F'].width = 30 # F 列ws3 = wb.create_sheet(title="Test-3")for row in range(10, 20):for col in range(10, 20):ws3.cell(column=col, row=row, value="0}".format(get_column_letter(col)))print(ws3['S10'].value)# 保存wb.save(filename)2.2.3.读取Excelfrom openpyxl import load_workbookdef read_test(filename):wb = load_workbook(filename)print('取得所有⼯作表的表名 :')print(wb.sheetnames, '\n')print('取得某张⼯作表 :')# sheet = wb['Sheet1']# sheet = wb.worksheets[0]sheet = wb[wb.sheetnames[0]]print(type(sheet))print('表名: ' + sheet.title, '\n')print('取得活动⼯作表 :')active_sheet = wb.activeprint('表名: ' + active_sheet.title, '\n')print('获取⼯作表的⼤⼩:')print('总⾏数: ' + str(active_sheet.max_row))print('总列数: ' + str(active_sheet.max_column))print('\n获取单元格数据:')for row in range(sheet.max_row):for col in range(sheet.max_column):print(f"第 {row + 1} ⾏ {col + 1} 列:", sheet.cell(row=row + 1, column=col + 1).value) print('\n获取⾏数据:')for i, cell_object in enumerate(list(sheet.rows)):cell_lst = [cell.value for cell in cell_object]print(f'第 {i + 1} ⾏:', cell_lst)2.2.4.案例demo 数据源格式# contents数据contents=[{"uid": "1281948912","group_name": "测试群-5","domain": "","user_area": [{"num": 1024,"region": "中国","percent": 33.33},{"num": 1022,"region": "中国⾹港","percent": 33.33},{"num": 1021,"region": "新加坡","percent": 33.33}],"gf_area": [{"num": 5680,"region": "中国⾹港","percent": 97.8},{"num": 60,"region": "新加坡","percent": 0.8},{"num": 55,"region": "美西","percent": 0.8}],"sip_area": {"waf_ip":[""],"sip":["13.75.120.253","18.163.46.57"],"isp_region":[{"country": "中国⾹港","isp": ""},{"country": "中国⾹港","isp": ""}]}},]写⼊Excelimport osimport timefrom openpyxl import Workbook, load_workbookfrom openpyxl.styles import Alignment, Font, colors, PatternFillFILE_PATH = os.path.join(os.path.dirname(__file__), 'files/')# 颜⾊BLACK = colors.COLOR_INDEX[0]WHITE = colors.COLOR_INDEX[1]RED = colors.COLOR_INDEX[2]DARKRED = colors.COLOR_INDEX[8]BLUE = colors.COLOR_INDEX[4]DARKBLUE = colors.COLOR_INDEX[12]GREEN = colors.COLOR_INDEX[3]DARKGREEN = colors.COLOR_INDEX[9]YELLOW = colors.COLOR_INDEX[5]DARKYELLOW = colors.COLOR_INDEX[19]def export_gf_excel_test(filename=None, sheetName=None, contents=None): filename = filename if filename else 'openpyxl_Test.xlsx'sheetName = sheetName if sheetName else '测试'contents = contents if contents else []# 新建⼯作簿wb = Workbook()ws = wb.worksheets[0]# 设置sheet名称ws.title = sheetName# sheet标签颜⾊ws.sheet_properties.tabColor = '1072BA'# 居中pos_center = Alignment(horizontal='center', vertical='center')# 字体样式bold_12_font = Font(name='仿宋', size=12, italic=False,color=BLACK, bold=True)# 背景颜⾊bg_color = PatternFill('solid', fgColor='4DCFF6')# 设置标题# 合并merge_lst = ['A1:A3', 'B1:B3', 'C1:C3', 'D1:R1', 'S1:AA1', 'AB1:AE1','D2:F2', 'G2:I2', 'J2:L2', 'M2:O2', 'P2:R2', 'S2:U2', 'V2:X2','Y2:AA2', 'AB2:AB3', 'AC2:AC3', 'AD2:AD3', 'AE2:AE3'][ws.merge_cells(c) for c in merge_lst]# 填充字段title_dic = {'A1': 'UID', 'B1': '钉钉群', 'C1': '域名','D1': '⽤户区域', 'S1': '⾼防区域', 'AB1': '源站区域','D2': 'TOP1', 'G2': 'TOP2', 'J2': 'TOP3', 'M2': 'TOP4', 'P2': 'TOP5','S2': 'TOP1', 'V2': 'TOP2', 'Y2': 'TOP3','AB2': 'WAF IP', 'AC2': '源站IP', 'AD2': '源站IP区域', 'AE2': '运营商'}line3_v = ['物理区域', '请求量', '占⽐'] * 8line3_k = [chr(i) + '3' for i in range(68, 91)] + ['AA3']title_dic.update(dict(zip(line3_k, line3_v)))for k, v in title_dic.items():ws[k].value = vws[k].font = bold_12_fontws[k].alignment = pos_centerws[k].fill = bg_color# 列宽width_dic = {'A': 30, 'B': 30, 'C': 30,'AB': 16, 'AC': 16, 'AD': 16, 'AE': 16}for k, v in width_dic.items():ws.column_dimensions[k].width = v# 内容for i, dic in enumerate(contents):user_gf_mod = {'region': '', 'num': '', 'percent': ''}user_area = dic['user_area']gf_area = dic['gf_area']sip_area = dic['sip_area']# UID+域名data = [dic['uid'], dic['group_name'], dic['domain']]# ⽤户区域if not user_area:user_area = [user_gf_mod] * 5else:user_area = list(map(lambda item: {'region': item['region'], 'num': item['num'], 'percent': item['percent']}, user_area))[user_area.append(user_gf_mod) for _ in range(5 - len(user_area))][data.extend(user_area[u].values()) for u in range(len(user_area))]# ⾼防区域if not gf_area:gf_area = [user_gf_mod] * 3else:gf_area = list(map(lambda item: {'region': item['region'], 'num': item['num'], 'percent': item['percent']}, gf_area))[gf_area.append(user_gf_mod) for _ in range(3 - len(gf_area))][data.extend(gf_area[g].values()) for g in range(len(gf_area))]# 源站区域waf_ip = sip_area['waf_ip']sip = sip_area['sip']isp_region = sip_area['isp_region']data.append(','.join(waf_ip)) if waf_ip else data.append('')data.append(','.join(sip)) if sip else data.append('')if not isp_region:data.extend([''] * 2)else:try:country = ','.join(map(lambda item: item['country'], isp_region))isp = ','.join(map(lambda item: item['isp'] if item['isp'] else '暂未查到', isp_region))data.append(country)data.append(isp)except Exception as e:print(e)print(isp_region)# 写⼊Excelws.append(data)# 保存⽂件wb.save(filename=filename)if __name__ == "__main__":curTime = ''.join(map(lambda i: str(i) if len(str(i)) >= 2 else '%02d' % i, [i for i in time.localtime()[:-4]])) filename = os.path.join(FILE_PATH, 'openpyxl_Test_{}.xlsx'.format(curTime))export_gf_excel_test(filename, contents=contents)2.3.xlsxwriter的使⽤2.3.1.安装pip install XlsxWriter2.3.2.写⼊Excelimport osimport timeimport jsonimport xlsxwriterFILE_PATH = os.path.join(os.path.dirname(__file__), 'files/')def export_gf_excel_test(filename=None, sheetName=None, contents=None):filename = filename if filename else 'xlsxwriter_Test.xlsx'sheetName = sheetName if sheetName else '测试'contents = contents if contents else []# 新建wb = xlsxwriter.Workbook(filename)ws = wb.add_worksheet(name=sheetName)# 设置风格style1 = wb.add_format({"bold": True,'font_name': '仿宋','font_size': 12,# 'font_color': '#217346','bg_color': '#4DCFF6',"valign": 'vcenter','text_wrap': 1})style2 = wb.add_format({# "bold": True,# 'font_name': '仿宋','font_size': 11,'font_color': '#217346','bg_color': '#E6EDEC',"align": 'center',"valign": 'vcenter',# 'text_wrap': 1})# 标题ws.set_column('A1:AE1', None, style1)# 合并单元格: first_row, first_col, last_row, last_col# 第 1 ⾏ws.merge_range(0, 0, 2, 0, 'UID')ws.merge_range(0, 1, 2, 1, '钉钉群')ws.merge_range(0, 2, 2, 2, '域名')ws.merge_range(0, 3, 0, 17, '⽤户区域')ws.merge_range(0, 18, 0, 26, '⾼防区域')ws.merge_range(0, 27, 0, 30, '源站区域')# 第 2 ⾏user_tl2 = ['TOP' + str(i) for i in range(1, 6)]gf_tl2 = user_tl2[:3][ws.merge_range(1, 3 * (i + 1), 1, 3 * (i + 2) - 1, name) for i, name in enumerate(user_tl2 + gf_tl2)] # 第 3 ⾏user_gf_tl3 = ['物理区域', '请求量', '占⽐'] * 8sip_tl3 = ['WAF IP', '源站IP', '源站IP区域', '运营商'][ws.write(2, 3 + i, name) for i, name in enumerate(user_gf_tl3)][ws.merge_range(1, 27 + i, 2, 27 + i, name) for i, name in enumerate(sip_tl3)]# ws.write(11, 2, '=SUM(1:10)') # 增加公式# ws.set_default_row(35) # 设置默认⾏⾼# 设置列宽ws.set_column(0, 2, 30)ws.set_column(3, 26, 10)ws.set_column(27, 30, 16)# 内容for i, dic in enumerate(contents):user_gf_mod = {'region': '', 'num': '', 'percent': ''}user_area = dic['user_area']gf_area = dic['gf_area']sip_area = dic['sip_area']# UID+域名data = [dic['uid'], dic['group_name'], dic['domain']]# ⽤户区域if not user_area:user_area = [user_gf_mod] * 5else:user_area = list(map(lambda item: {'region': item['region'], 'num': item['num'], 'percent': item['percent']}, user_area))[user_area.append(user_gf_mod) for _ in range(5 - len(user_area))][data.extend(user_area[u].values()) for u in range(len(user_area))]# ⾼防区域if not gf_area:gf_area = [user_gf_mod] * 3else:gf_area = list(map(lambda item: {'region': item['region'], 'num': item['num'], 'percent': item['percent']}, gf_area))[gf_area.append(user_gf_mod) for _ in range(3 - len(gf_area))][data.extend(gf_area[g].values()) for g in range(len(gf_area))]# 源站区域waf_ip = sip_area['waf_ip']sip = sip_area['sip']isp_region = sip_area['isp_region']data.append(','.join(waf_ip)) if waf_ip else data.append('')data.append(','.join(sip)) if sip else data.append('')if not isp_region:data.extend([''] * 2)else:try:country = ','.join(map(lambda item: item['country'], isp_region))isp = ','.join(map(lambda item: item['isp'] if item['isp'] else '暂未查到', isp_region))data.append(country)data.append(isp)except Exception as e:print(e)# 写⼊Excelws.write_row('A' + str(i + 4), data, style2)# 保存关闭⽂件wb.close()if __name__ == '__main__':curTime = ''.join(map(lambda i: str(i) if len(str(i)) >= 2 else '%02d' % i, [i for i in time.localtime()[:-4]]))filename = os.path.join(FILE_PATH, 'xlsxwriter_Test_{}.xlsx'.format(curTime))export_gf_excel_test(filename, contents=contents)以上是两个库操作Excel的简单实现。
python excel的读写
python excel的读写Python是一种功能强大的编程语言,可以用于处理各种类型的数据。
在数据处理中,Excel是一种常用的工具,因此,Python提供了许多库和模块,用于读写Excel文件。
本文将介绍如何使用Python 进行Excel的读写操作。
我们需要安装一个Python库,用于处理Excel文件。
最常用的库是`openpyxl`,它提供了许多功能,包括读取和写入Excel文件。
要安装`openpyxl`库,可以使用以下命令:```pip install openpyxl```安装完成后,我们就可以开始读取和写入Excel文件了。
我们来看看如何读取Excel文件。
假设我们有一个名为`data.xlsx`的Excel文件,其中包含了一些数据。
我们可以使用以下代码来读取该文件:```pythonimport openpyxl# 打开Excel文件workbook = openpyxl.load_workbook('data.xlsx')# 选择第一个工作表sheet = workbook.active# 遍历工作表中的每一行for row in sheet.iter_rows():# 遍历每一行中的每一列for cell in row:# 输出单元格的值print(cell.value)```上述代码中,我们首先使用`load_workbook()`函数打开Excel文件。
然后,我们选择第一个工作表,并使用`iter_rows()`方法遍历工作表中的每一行。
在内部循环中,我们遍历每一行中的每一列,并输出单元格的值。
接下来,我们来看看如何写入Excel文件。
假设我们有一些数据,我们想要将其写入到一个名为`output.xlsx`的Excel文件中。
我们可以使用以下代码来实现:```pythonimport openpyxl# 创建一个新的工作簿workbook = openpyxl.Workbook()# 创建一个新的工作表sheet = workbook.active# 将数据写入工作表data = [['姓名', '年龄', '性别'],['张三', 18, '男'],['李四', 20, '女'],['王五', 22, '男']]for row in data:sheet.append(row)# 保存工作簿workbook.save('output.xlsx')```上述代码中,我们首先创建一个新的工作簿,并使用`active`属性选择第一个工作表。
python处理excel实例
python处理excel实例Python是一种功能强大的编程语言,可以用来处理各种数据类型,包括Excel文件。
Python处理Excel文件的能力极强,可以进行数据提取、数据处理、数据分析等多方面操作。
下面是一个Python处理Excel文件的实例:1. 导入所需的库```pythonimport openpyxl```2. 读取Excel文件```pythonwb = openpyxl.load_workbook('example.xlsx')```这个代码块会打开名为example.xlsx的Excel文件,并将其存储在变量wb中。
3. 选择工作表```pythonsheet = wb['Sheet1']```这个代码块会选择名为Sheet1的工作表,并将其存储在变量sheet中。
4. 读取单元格数据cell_value = sheet['A1'].value```这个代码块会读取A1单元格的数据,并将其存储在变量cell_value中。
5. 读取行数据```pythonrow_values = []for row in sheet.iter_rows(min_row=2, max_col=3):row_values.append([cell.value for cell in row])```这个代码块会读取工作表中第2行到最后一行、第1列到第3列的数据,并将其存储在列表row_values中。
6. 读取列数据```pythoncolumn_values = []for column in sheet.iter_cols(min_row=2, max_row=4):column_values.append([cell.value for cell in column]) ```这个代码块会读取工作表中第2列到第4列、第1行到最后一行的数据,并将其存储在列表column_values中。
python xlsx操作方法
python xlsx操作方法摘要:1.Python与Excel的关联2.使用pandas库操作Excel3.读取Excel文件4.数据处理与分析5.保存数据至Excel文件6.其他常用操作方法7.总结正文:Python作为一种广泛应用于数据处理和科学计算的编程语言,与Excel的关联越来越紧密。
通过pandas库,Python可以轻松实现对Excel文件的操作,包括读取、数据处理、分析和保存数据等。
本文将详细介绍Python如何使用pandas库进行Excel操作。
首先,确保已经安装了pandas库和openpyxl库。
可以使用以下命令进行安装:```pip install pandaspip install openpyxl```1.使用pandas库操作Excelpandas库是Python中进行数据处理的重要工具,它提供了DataFrame 数据结构,可以方便地对数据进行处理和分析。
pandas支持多种数据来源,其中就包括Excel文件。
2.读取Excel文件要使用pandas读取Excel文件,可以使用`read_excel()`函数。
该函数有多个参数,用于指定读取的文件路径、工作表名称以及读取模式等。
例如:```pythonimport pandas as pd# 读取Excel文件file_path = "example.xlsx"df = pd.read_excel(file_path, sheet_name="Sheet1",engine="openpyxl")```3.数据处理与分析读取Excel文件后,可以使用pandas提供的各种函数对数据进行处理和分析。
例如,可以使用`describe()`函数查看数据的描述性统计信息,使用`groupby()`函数进行分组汇总等。
```python# 查看数据的描述性统计信息print(df.describe())# 对数据进行分组汇总grouped = df.groupby("column_name")```4.保存数据至Excel文件对数据进行处理和分析后,可以使用`to_excel()`函数将结果保存至Excel 文件。
python中使用xlwt操作excel的常见方法与问题
python中使⽤xlwt操作excel的常见⽅法与问题前⾔Python可以操作Excel的模块不⽌⼀种,我习惯使⽤的写⼊模块是xlwt(⼀般都是读写模块分开的)python中使⽤xlwt操作excel⾮常⽅,和Java使⽤调框架apache poi相⽐这就是天堂啊,下⾯话不多说了,来⼀起看看详细的介绍吧⼀.安装xlwt模块pip3 install xlwt⼆.简单使⽤xlwtimport xlwt #导⼊模块workbook = xlwt.Workbook(encoding='utf-8') #创建workbook 对象worksheet = workbook.add_sheet('sheet1') #创建⼯作表sheetworksheet.write(0, 0, 'hello') #往表中写内容,第⼀各参数⾏,第⼆个参数列,第三个参数内容workbook.save('students.xls') #保存表为students.xls#在Java中使⽤poi操作excel 在创建workbook对象的时候就需要写好表名,创建workbook对象完成后#这个表就已经存在,但是使⽤xlwt 需要在最后调⽤保存的时候为表命名,并且只有调⼊save⽅法后才会#创建表三.为内容设置styleworkbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('sheet1')#设置字体样式font = xlwt.Font()#字体 = 'Time New Roman'#加粗font.bold = True#下划线font.underline = True#斜体font.italic = True#创建stylestyle = xlwt.XFStyle()style.font = font#根据样式创建workbookworksheet.write(0, 1, 'world', style)workbook.save('students.xls')四.合并单元格使⽤xlwt 合并单元格时不⽤像poi通过style来设置,直接创建和并单元格就可以,workbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('sheet1')#通过worksheet调⽤merge()创建合并单元格#第⼀个和第⼆个参数单表⾏合并,第三个和第四个参数列合并,#合并第0列到第2列的单元格worksheet.write_merge(0, 0, 0, 2, 'first merge')#合并第1⾏第2⾏第⼀列的单元格worksheet.write_merge(0, 1, 0, 0, 'first merge')workbook.save('students.xls')如果需要了解具体调合并单元格规则就⾃⼰试着合并,查看合并效果.才能清晰明了五.设置单元格的对齐⽅式workbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('sheet1')alignment = xlwt.Alignment()# ⽔平居中alignment.horz = xlwt.Alignment.HORZ_CENTER# 垂直居中alignment.vert = xlwt.Alignment.VERT_CENTERstyle.alignment = alignment#设置单元格宽度worksheet.col(0).width = 6666#设置单元格的⾼度worksheet.row(0).height_mismatch = True worksheet.row(0).height = 1000worksheet.write(0, 0, 'hello world', style) workbook.save('center.xls')六.设置单元格调边框workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('sheet1') border = xlwt.Borders()# DASHED虚线# NO_LINE没有# THIN实线border.left = xlwt.Borders.THIN# 设置颜⾊border.left_coloure = 0x40bborder.right = xlwt.Borders.THINborder.right_colour = 0x40bborder.top = xlwt.Borders.THINborder.top_colour = 0x40bborder.bottom = xlwt.Borders.THINborder.bottom_colour = 0x40bstyle = xlwt.XFStyle()style.borders = borderworksheet.write(0, 0, 'love', style) workbook.save('dashed.xls')七.设置单元格边框workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('sheet1') border = xlwt.Borders()# DASHED虚线# NO_LINE没有# THIN实线border.left = xlwt.Borders.THINborder.right = xlwt.Borders.THINborder.top = xlwt.Borders.THINborder.bottom = xlwt.Borders.THINstyle = xlwt.XFStyle()style.borders = borderworksheet.write(1, 1, 'love', style) workbook.save('dashed.xls')⼋.设置单元格背景⾊workbook = xlwt.Workbook(encoding='utf-8') worksheet = workbook.add_sheet('sheet1') pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 8 through 63# 0 = Black, 1 = White,# 2 = Red, 3 = Green, 4 = Blue,# 5 = Yellow, 6 = Magenta, 7 = Cyan,# 16 = Maroon, 17 = Dark Green,# 18 = Dark Blue, 19 = Dark Yellow ,# almost brown), 20 = Dark Magenta,# 21 = Teal, 22 = Light Gray,# 23 = Dark Gray, the list goes on... pattern.pattern_fore_colour = 3style.pattern = patternworksheet.write(1, 1, 'shit', style)workbook.save('shit.xls')九.设置字体颜⾊workbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('sheet1')font = xlwt.Font()# 设置字体为红⾊font.colour_index=xlwt.Style.colour_map['red']style = xlwt.XFStyle()style.font = fontworksheet.write(0, 1, 'world', style)workbook.save('students.xls')遇到的问题:1.PermissionError: [Errno 13] Permission denied: 'dashed.xls'原因:测试写⼊调时候⽂件被打开了,⽆法写⼊,关闭⽂件后再写⼊就ok了2.TypeError: 'module' object is not callable创建style的时候调错对象将style = xlwt.Style()改为style = xlwt.XFStyle()总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
用python修改excel表某一列内容的操作方法
⽤python修改excel表某⼀列内容的操作⽅法想想你在⼀家公司⾥做表格,现在有⼀个下⾯这样的excel表摆在你⾯前,这是⼀个员⼯每个⽉⼯资的表,现在假设,你要做的事情,是填充好后⾯⼏个⽉每个员⼯的编号,并且给员⼯随机⽣成⼀个2000到50000之间的随机数作为该⽉的⼯资,能拿多少全靠天意,你为了锻炼⾃⼰的python能⼒决定写⼀个相关的代码:1 库引⼊⾸先要引⼊库函数,要修改excel内容⾸先需要有openpyxl这个库,要⽣成随机数就要有random这个库import openpyxlimport random2 提取cell我们⾸先提取编号:编号是第B列workbook=openpyxl.load_workbook('⼯资.xlsx')table = workbook['Sheet1']print(table['B'])3 提取List但此时我们发现提取出的是cell格式的数据⽽不是我们常见的list格式,我们可以通过以下⽅式获得list格式:def cell2List(CELL):LIST=[]for cell in CELL:LIST.append(cell.value)return LISTIDList=cell2List(table['B'])print(IDList)4 修改List数据接下来我们要找到 ‘⼯作编号' 这⼏个字的位置def get_location_in_list(x, target):step = -1items = list()for i in range(x.count(target)):y = x[step + 1:].index(target)step = step + y + 1items.append(step)return itemsIDPos=get_location_in_list(IDList, '⼯作编号')print(IDPos)接下来我们要将最前⾯的员⼯名称复制到后⾯,假设我们已经知道有5个⼈,且知道⼩标题占两个格⼦(‘⼯作编号' 这⼏个字后⾯跟着' ')那么编写如下代码:staffNum=5for i in range(0,len(IDPos)):IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum]print(IDList)5 修改cell值这时候我们只需要将只赋回cell即可:tempi=0for cell in table['B']:cell.value=IDList[tempi]tempi=tempi+1这时候却发现如下报错:这时因为我们有的格⼦是合并起来的只需要将代码改成如下形式即可:tempi=0for cell in table['B']:try:cell.value=IDList[tempi]except:print('')tempi=tempi+16 存储回原EXCEL或新EXCEL主要靠更改后⾯参数,例如我想新存⼀个result.xlsxworkbook.save(filename = "result.xlsx")7 其他格式修正(居左为例)假如你发现,此时存储结果编号局中了:我想将其居左,只需将前⾯代码修改为:tempi=0for cell in table['B']:try:cell.value=IDList[tempi]cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')except:print('')tempi=tempi+18 随机⽣成⼯资与前⾯类似,较为简单,建议看完整代码⾃⼰领悟嗷9 完整代码import openpyxlimport randomdef cell2List(CELL):LIST=[]for cell in CELL:LIST.append(cell.value)return LISTdef get_location_in_list(x, target):step = -1items = list()for i in range(x.count(target)):y = x[step + 1:].index(target)step = step + y + 1items.append(step)return itemsworkbook=openpyxl.load_workbook('⼯资.xlsx')table = workbook['Sheet1']IDList=cell2List(table['B'])salaryList=cell2List(table['C'])IDPos=get_location_in_list(IDList, '⼯作编号')staffNum=5for i in range(0,len(IDPos)):IDList[IDPos[i]+1:IDPos[i]+2+staffNum]=IDList[IDPos[0]+1:IDPos[0]+2+staffNum] for j in range(IDPos[i]+1,IDPos[i]+2+staffNum):salaryList[j]=1# tempi=0# for cell in table['B']:# cell.value=IDList[tempi]# tempi=tempi+1tempi=0for cell in table['B']:try:cell.value=IDList[tempi]cell.alignment = openpyxl.styles.Alignment(horizontal='left', vertical='center')except:print('')tempi=tempi+1tempi=0for cell in table['C']:try:if salaryList[tempi]==1:cell.value=random.randint(2000,50000)except:print('')tempi=tempi+1workbook.save(filename = "result.xlsx")效果:以上就是⽤python修改excel表某⼀列内容的详细内容,更多关于python修改excel的资料请关注其它相关⽂章!。
python对excel文件的处理
python对excel⽂件的处理python处理excel⽂件有很多⽅法,最开始接触的是xlrd、xlsxwriter模块,分别⽤于excel⽂件的读、写。
后来⼜学习了openpyxl模块,可以同时完成excel⽂件的读、写。
再后来,接触了⼤⽜pandas,这是python中专门⽤于数据分析的模块,有更加强⼤的功能。
本⽂尝试梳理⼀下这⼏个⽅法,以实际案例来对⽐各种⽅法的优劣。
1. xlrd、xlsxwriter模块1import xlrd #读取excel⽂件2import xlsxwriter #写⼊excel⽂件3 file_name = r'C:/2020/python-exer/excel_doc/time_fmt.xls' #存在⼀个excel⽂件,⽤于读4 file_name1 = r'C:/2020/python-exer/excel_doc/time_fmt_output.xls' #新建⼀个excel⽂件,⽤于写5# 读取excel⽂件,按⾏读取数据,每⾏数据对应⼀个列表元素6def excel_lines():7 wb = xlrd.open_workbook(file_name)8# 打开Excel⽂件9 sheet1 = wb.sheet_by_name('Sheet1') # 通过excel表格sheet名称获取⼯作表10 dat = [] # 创建空list11 Max_lines = sheet1.nrows # sheet1数据最⼤⾏数,即便每列元素不同。
12print(Max_lines)13for a in range(Max_lines):14 cells = sheet1.row_values(a) # 每⾏数据赋值给cells15 dat.append(cells)16return datView Code#>>>[['序号', '时间格式定义'], [1.0, '%a Locale’s abbreviated weekday name. '],[2.0, '%A Locale’s full weekday name. '],……从输出内容看出,得到的是⼀个嵌套list,每⾏数据对应着⼀个list元素。
使用Python处理excel表格(openpyxl)教程
使⽤Python处理excel表格(openpyxl)教程现在有个⼩任务,需要处理excel中的数据。
其实就是简单的筛选,excel玩的不熟练,⽽且需要处理的表有70多个,于是想着写个脚本处理⼀下吧。
python中的openpyxl包可以轻松实现读写excel⽂件,下⾯简单介绍⼀下过程。
1.安装openpyxl通过pip或者easy_install均可安装openpyxl。
openpyxl官⽹:https:///en/latest/安装命令:pip install openpyxl (在线安装)或者 easy_install openpyxl 即可。
2.使⽤openpyxl读xlsx加载workbook,注意,openpyxl只⽀持xlsx格式,⽼版的xls格式需要其他⽅法去加载。
wb = load_workbook(filename = r'tj.xlsx')获取每个sheet的名称sheetnames = wb.get_sheet_names()获得第⼀个sheetws = wb.get_sheet_by_name(sheetnames[0])获取⼀个单元格的数据c = ws['A4']或者c = ws.cell('A4')或者d = ws.cell(row = 4, column = 2)⼀次获取多个单元格的数据cell_range = ws['A1':'C2']或者tuple(ws.iter_rows('A1:C2'))或者1. for row in ws.iter_rows('A1:C2'):2. for cell in row:3. <span style='white-space:pre'> </span>print cell或者1. data_dic = []2.3. for rx in range(0,ws.get_highest_row()):4.5. temp_list = []6. money = ws.cell(row = rx,column = 1).value7. kind = ws.cell(row = rx,column = 2).value8.9. temp_list = [money , kind]10. #print temp_list11.12. data_dic.append(temp_list)13.14. for l in data_dic:15. print l[0],l[1]3.写⼊xlsx⽐如数据存在上边定义的data_dic中1. out_filename = r'result.xlsx'2.3. outwb = Workbook()4.5. ew = ExcelWriter(workbook = outwb)6.7. ws = outwb.worksheets[0]8.9. ws.title = 'res'9. ws.title = 'res'10.11. i=112. for data_l in data_dic:13. for x in range(0,len(data_l)):14. #col = get_column_letter(x)15. ws.cell(column = x+1 , row = i , value = '%s' % data_l[x])16. i+=117.18. ew.save(filename = out_filename)再增加⼀个sheet写内容1. ws2 = outwb.create_sheet(title = 's2')2.3. for data_l in data_dic:4. for x in range(0,len(data_l)):5. ws2.cell(column = x+1 , row = i , value = '%s' % data_l[x])6. i+=17.8. ew.save(filename = out_filename)4.中⽂编码问题表格中的值,openpyxl会⾃动转换为不同的类型,有些表格中会有中⽂出现,就需要进⾏相应的转码。
利用python对excel中的特定数据提取并写入新表的方法
利用python对excel中的特定数据提取并写入新表的方法如果你正在寻找一种简单而有效的方法来提取Excel中的特定数据,并将其写入新的表格,那么下面这个方法可能会对你有所帮助。
我们将使用Python的pandas和openpyxl库来完成这个任务。
**步骤一:安装必要的库**首先,你需要确保已经安装了pandas和openpyxl库。
你可以通过以下命令在命令行中安装它们:```pip install pandas openpyxl```**步骤二:导入必要的库**在Python脚本中,你需要导入这些库以使用它们的功能。
这可以通过以下代码完成:```pythonimport pandas as pd```**步骤三:读取Excel文件**接下来,我们需要使用pandas的read_excel函数来读取Excel文件。
我们可以将Excel文件的内容读入一个DataFrame对象,这个对象就像一个表格。
例如:```pythondata = pd.read_excel('原始文件.xlsx')```这里假设你的Excel文件名为"原始文件.xlsx",你需要将其替换为你的实际文件名。
**步骤四:提取特定数据**现在,我们可以使用pandas的数据选择功能来提取我们感兴趣的数据。
例如,如果我们想要提取名为'张三'的所有行的数据,我们可以这样做:```python我们想要的数据 = data[data['姓名'] == '张三']```你也可以使用其他条件来选择数据,例如按特定列进行排序。
**步骤五:写入新Excel文件**最后,我们可以使用pandas的to_excel函数将提取的数据写入新的Excel文件。
例如:```python我们想要的数据.to_excel('新文件.xlsx', index=False)```这段代码会将我们提取的数据写入名为"新文件.xlsx"的新Excel 文件中,并且不会包含行索引。
Python文件操作(读写Excel)
Python⽂件操作(读写Excel)⽂件读写Excel1.使⽤xlrd读取excel#使⽤xlrd读取excel#1.导⼊模块import xlrd# 2. 使⽤xlrd的函数打开本地⽂件workbook=xlrd.open_workbook('案例.xlsx')#3. 获取⼯作表# sheets=workbook.sheets()#获取所有⼯作表组成list,具体某个表⽤下标# sheetOne=sheets[0]# sheetOne=workbook.sheet_by_index(0)#使⽤函数通过int 获取第⼏张# 返回⼯作表名称组成的列表sheetNames=workbook.sheet_names()sheetOne=workbook.sheet_by_name(sheetNames[0])# ⾏数row=sheetOne.nrows# 列数col=sheetOne.ncols# ⽤for遍历⾏数,输出每⾏for i in range(row):each_row=sheetOne.row_values(i)print(each_row)# ⽤for 遍历列数,输出每列for i in range(col):each_col=sheetOne.col_values(i)print(each_col)# 精确到单元格# 尝试输出第⼆⾏,第⼆列的值,读取列表的⽅式print(sheetOne.row_values(1)[1])# sheetOne.cell(row,col) 获取单元格# 单元格.value 是值# sheetOne.cell_value(row,col)直接返回值print(sheetOne.cell(8,1).value)print(sheetOne.cell_value(8,1))# ⽤循环输出所有单元格的内容# ⽅法⼀# for i in range(row):# eachrow=sheetOne.row_values(i)# for each in eachrow:# print(each)# ⽅法⼆for i in range(row):for j in range(col):print(sheetOne.cell_value(i,j))2.使⽤xlwt模块写⼊excel # 导⼊xlwt模块import xlwt# 创建⼯作簿wb=xlwt.Workbook()#创建⼯作表sheet=wb.add_sheet('newSheet')for i in range(1,10):for j in range(1,i+1):sheet.write(i,j-1,str(j)+'x'+str(i)+'='+str(i*j)) # 保存⽂件wb.save('newExcel.xls')3.使⽤xlutils模块修改excel# 使⽤xlutils模块修改 excelimport xlrdfrom xlutils.copy import copy# xlrd 读取⼯作簿wb=xlrd.open_workbook('案例.xlsx')# 复制⼀份⼯作簿,⽤来写⼊copyed=copy(wb)# 获取复制来的⼯作簿的⼯作表sheetOne=copyed.get_sheet(0)# 使⽤writr()写⼊sheetOne.write(3,0,'我是更改的内容')# 保存,如果保存的⽂件名存在则覆盖,不存在则保存个新的copyed.save('new新存的.xls')4.使⽤openpyxl操作excel#使⽤openpyxl操作excelfrom openpyxl import Workbook# 1. 实例化对象,创建⼯作簿wb=Workbook()# 2. 使⽤第⼀张⼯作表sheet=wb.active# 3. 给表取个名字sheet.title='表的名称1'# 4. 给表增加内容:sheet.append(list类型)sheet.append([1,2,3])# 5.保存⼯作簿wb.save('new1.xlsx')5.⼯作簿属性与⽅法from openpyxl import Workbook # 创建新的⼯作簿from openpyxl import load_workbook # 打开已有⼯作簿# wb = load_workbook('new1.xls') 打开不了 xls 的⽂件wb = load_workbook('F:\Python资料\data.xlsx')'''workbook 的属性:workbook.sheetnames : 所有⼯作表的名字组成的列表workbook.worksheets : 所有⼯作表组成的列表workbook.active : 默认的⼯作表(第⼀张)workbook 的⽅法:workbook.get_sheet_names() : 同 workbook.sheetnamesworkbook.get_active_sheet() : 同 workbook.activeworkbook.get_sheet_by_name(name): 根据name获取 sheetworkbook.create_sheet(sheetname,index) : 创建sheet,以及名称与index位置workbook.save(filename) : 保存'''sheet = wb.create_sheet('新的',2)sheet.append([1,2,3])wb.save('data.xlsx')6.⼯作表属性与⽅法(上)from openpyxl import load_workbookwb = load_workbook('data.xlsx')# 获取表格 wb[ 'sheetname' ]sheet = wb['新的']'''⼯作表的属性:sheet.rows :⾏数对象sheet.columns :列数对象sheet.max_row :有效的最⼤⾏数sheet.min_row :有效的最⼩⾏数sheet.max_column:有效的最⼤列数sheet.min_column:有效的最⼩列数sheet.values :所有单元格的值组成的2维列表。
利用python对excel中的特定数据提取并写入新表的方法
利用python对excel中的特定数据提取并写入新表的方法一、引言在实际工作中,我们常常需要利用Python对Excel文件中的特定数据进行提取,并将其写入新的表格。
本文将详细介绍如何利用Python实现这一目的,从而提高数据处理的效率。
二、Python提取Excel数据库方法1.安装库要处理Excel文件,我们需要安装python-openpyxl库。
在命令行中输入以下命令进行安装:```pip install openpyxl```2.读取Excel文件首先,我们需要导入openpyxl库,并使用openpyxl.load_workbook()函数读取Excel文件。
```pythonimport openpyxl# 读取Excel文件workbook = openpyxl.load_workbook("example.xlsx")```3.提取特定数据接下来,我们需要根据需求提取Excel文件中的特定数据。
以下是一个简单的示例,提取A1单元格的值:```python# 提取A1单元格数据cell_value = workbook["Sheet1"].cell(1, 1).value```三、将提取的数据写入新表1.创建新表结构首先,我们需要创建一个新的Excel文件,并设置新表的结构。
以下代码示例创建了一个包含3列的新表:```python# 创建新表ew_workbook = workbook.copy(title="New Sheet")# 获取新表ew_sheet = new_workbook["New Sheet"]# 设置新表列宽for col in range(1, 4):new_sheet["A" + str(col)].column_width = 10```2.写入数据接下来,我们将提取的特定数据写入新表。
python 读取excel 表格方法
这段代码会输出第一行第一列单元格中的数据。将row和column参数设置为要读取的单元格的行号和列号即可。如果要获取整行或整列的数据,可以使用iter_rows或iter_cols方法。
六、遍历整个工作表
如果需要遍历整个工作表的数据,可以使用iter_rows方法,代码如下:
```python
```
现在,可以开始使用openpyxl库来读取Excel表格了。
三、打开Excel文件
要读取Excel表格,首先需要打开Excel文件。使用openpyxl库的load_workbook函数可以打开一个Excel文件,代码如下:
```python
workbook = openpyxl.load_workbook('example.xlsx')
```python
pip install openpyxl
```
安装完成后,就可以使用openpyxl库来操作Excel表格了。
二、导入openpyxl库
在使用openpyxl库之前,需要先导入它。可以使用以下代码将openpyxl库导入到Python脚本中:
```python
import openpyxl
十、处理大批量Excel文件
在实际工作中,可能需要处理大批量的Excel文件。openpyxl库可以很方便地处理这种情况,可以使用Python的文件操作功能和循环结合openpyxl库来实现批量处理。比如可以遍历文件夹中的所有Excel文件,对其进行读取、修改或合并等操作。
十一、与其他库结合使用
除了openpyxl库外,Python还有许多其他强大的数据处理和可视化库,比如pandas、numpy和matplotlib等。可以将openpyxl库与这些库结合使用,实现更复杂的数据处理和分析。比如可以使用pandas库读取Excel数据并进行分析,然后将分析结果再写回Excel文件中。
python操作Excel的5种方式
python操作Excel的5种⽅式Python对Excel的读写主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter⼏种。
1.xlrd主要是⽤来读取excel⽂件import xlrddata = xlrd.open_workbook('abcd.xls') # 打开xls⽂件table = data.sheets()[0] # 打开第⼀张表nrows = table.nrows # 获取表的⾏数for i in range(nrows): # 循环逐⾏打印if i == 0:# 跳过第⼀⾏continueprint (table.row_values(i)[:13]) # 取前⼗三列⽰例:#coding=utf-8########################################################filename:test_xlrd.py#author:defias#date:xxxx-xx-xx#function:读excel⽂件中的数据#######################################################import xlrd#打开⼀个workbookworkbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls')#抓取所有sheet页的名称worksheets = workbook.sheet_names()print('worksheets is %s' %worksheets)#定位到sheet1worksheet1 = workbook.sheet_by_name(u'Sheet1')"""#通过索引顺序获取worksheet1 = workbook.sheets()[0]#或worksheet1 = workbook.sheet_by_index(0)""""""#遍历所有sheet对象for worksheet_name in worksheets:worksheet = workbook.sheet_by_name(worksheet_name)"""#遍历sheet1中所有⾏rownum_rows = worksheet1.nrowsfor curr_row in range(num_rows):row = worksheet1.row_values(curr_row)print('row%s is %s' %(curr_row,row))#遍历sheet1中所有列colnum_cols = worksheet1.ncolsfor curr_col in range(num_cols):col = worksheet1.col_values(curr_col)print('col%s is %s' %(curr_col,col))#遍历sheet1中所有单元格cellfor rown in range(num_rows):for coln in range(num_cols):cell = worksheet1.cell_value(rown,coln)print cell"""#其他写法:cell = worksheet1.cell(rown,coln).valueprint cell#或cell = worksheet1.row(rown)[coln].valueprint cell#或cell = worksheet1.col(coln)[rown].valueprint cell#获取单元格中值的类型,类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 errorcell_type = worksheet1.cell_type(rown,coln)print cell_type"""2.xlwt主要是⽤来写excel⽂件#Python学习交流群:778463939import xlwtwbk = xlwt.Workbook()sheet = wbk.add_sheet('sheet 1')sheet.write(0,1,'test text')#第0⾏第⼀列写⼊内容wbk.save('test.xls')3.xlutils结合xlrd可以达到修改excel⽂件⽬的import xlrdfrom xlutils.copy import copyworkbook = xlrd.open_workbook(u'有趣装逼每⽇数据及趋势.xls')workbooknew = copy(workbook)ws = workbooknew.get_sheet(0)ws.write(3, 0, 'changed!')workbooknew.save(u'有趣装逼每⽇数据及趋势copy.xls')4.openpyxl可以对excel⽂件进⾏读写操作from openpyxl import Workbookfrom openpyxl import load_workbookfrom openpyxl.writer.excel import ExcelWriterworkbook_ = load_workbook(u"新歌检索失败1477881109469.xlsx") sheetnames =workbook_.get_sheet_names() #获得表单名字print sheetnamessheet = workbook_.get_sheet_by_name(sheetnames[0])print sheet.cell(row=3,column=3).valuesheet['A1'] = '47'workbook_.save(u"新歌检索失败1477881109469_new.xlsx")wb = Workbook()ws = wb.activews['A1'] = 4wb.save("新歌检索失败.xlsx")⽰例:import openpyxl# 新建⽂件workbook = openpyxl.Workbook()# 写⼊⽂件sheet = workbook.activesheet['A1']='A1'# 保存⽂件workbook.save('test.xlsx')5.xlsxwriter可以写excel⽂件并加上图表import xlsxwriterdef get_chart(series):chart = workbook.add_chart({'type': 'line'})for ses in series:name = ses["name"]values = ses["values"]chart.add_series({'name': name,'categories': 'A2:A10','values':values})chart.set_size({'width': 700, 'height': 350})return chartif __name__ == '__main__':workbook = xlsxwriter.Workbook(u'H5应⽤中⼼关键数据及趋势.xlsx') worksheet = workbook.add_worksheet(u"每⽇PV,UV")headings = ['⽇期', '平均值']worksheet.write_row('A1', headings)index=0for row in range(1,10):for com in [0,1]:worksheet.write(row,com,index)index+=1series = [{"name":"平均值","values":"B2:B10"}]chart = get_chart(series)chart.set_title ({'name': '每⽇页⾯分享数据'})worksheet.insert_chart('H7', chart)workbook.close()openpyxl⽰例:import xlsxwriter as xw#新建excelworkbook = xw.Workbook('myexcel.xlsx')#新建⼯作薄worksheet = workbook.add_worksheet()#写⼊数据worksheet.wirte('A1',1)#关闭保存workbook.close()合并表格实例:#coding:utf-8import xlsxwriterimport xlrd#新建excelworkbook = xlsxwriter.Workbook('⼴东.xlsx')#新建⼯作薄worksheet = workbook.add_worksheet()count = 1worksheet.write("A%s"%count,"公司名称")worksheet.write("B%s"%count,"法⼈")worksheet.write("C%s"%count,"电话")worksheet.write("D%s"%count,"注册资⾦")worksheet.write("E%s"%count,"注册时间")count+=1for i in range(1,153):data = xlrd.open_workbook('ah (%s).xls'%i) # 打开xls⽂件 table = data.sheets()[0] # 打开第⼀张表nrows = table.nrows # 获取表的⾏数for i in range(nrows): # 循环逐⾏打印if i == 0:# 跳过第⼀⾏continue# print (table.row_values(i)[:5]) # 取前⼗三列print(count,table.row_values(i)[:5][0])#写⼊数据#设定第⼀列(A)宽度为20像素 A:E表⽰从A到Eworksheet.set_column('A:A',30)worksheet.set_column('B:E',20)worksheet.write("A%s"%count,table.row_values(i)[:5][0]) worksheet.write("B%s"%count,table.row_values(i)[:5][1]) worksheet.write("C%s"%count,table.row_values(i)[:5][2]) worksheet.write("D%s"%count,table.row_values(i)[:5][3]) worksheet.write("E%s"%count,table.row_values(i)[:5][4]) count+=1#关闭保存workbook.close()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Python 对Excel 操作详解文档摘要:本文档主要介绍如何通过python 对office excel 进行读写操作,使用了xlrd 、xlwt 和xlutils 模块。
另外还演示了如何通过Tcl tcom 包对excel 操作。
关键字:Python、Excel、xlrd 、xlwt 、xlutils、TCl 、tcom1 Python 简介Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。
它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。
它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
与Scheme、Ruby、Perl 、Tcl 等动态语言一样,Python 具备垃圾回收功能,能够自动管理存储器使用。
它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。
Python 虚拟机本身几乎可以在所有的作业系统中运行。
使用一些诸如py2exe、PyPy、PyInstaller 之类的工具可以将Python 源代码转换成可以脱离Python 解释器运行的程序。
2 Python 安装Python 目前的版本已经更新到3.4.0 ,本文使用的版本为2.7.5 ,所有的版本都可以在python 官网下载,至于 2.x 和 3.x 版本的具体区别也可以在官网查看。
从官网下载了python 2.7.5 安装文件后,直接双击就可以安装pythonPython 也是一种实时交互语言,可以通过自带的IDLE 编写python 语句并反馈回显信息,可以通过图 1 方式调出python IDLE 。
图1也可以在cmd下输入python ,但默认情况下python并没有添加到windows 环境变量中,导致在cmd下输入python的时候出现提示“ 'python'不是内部或外部命令,也不是可运行的程序或批处理文件。
”,windows 下可执行文件在运行时首先在当前目录下搜索,因为进入cmd 下默认路径一般为C:\Documents and Settings\Administrator> ,而在这个路径下是找不到python 的,所以提示出错,可以进入到python 安装目录下,然后执行python 就可以进入交互命令行模式下。
如果懒的每次都进入python 安装,此时需要将python 安装路径添加到系统变量中,然后windows 在执行命令的时候会去环境变量中查找路径,具体配置如图 2 所示,在Path 中添加python 的安装路径“C:\Python2.7.5; ”,主要路径后面要加”;”分号表面这是一个路径的结束,此时无论在哪个路径下都可以执行python 调出交互命令行。
图23 Python 语法入门在Python 简介中提到Python 是一种直译式电脑编程语言,体现在语法中,如要将变量 a 赋值为1,Tcl 使用命令%set a 1(本文中为了区分Tcl 和Python 的命令,Tcl 命令前会加上“ %”,否则默认为Python 命令),在python 中命令为a = 1,输出a的值可以直接输入a,也可以通过print语句输出a的值,命令为print a (在python 3.0 以后版本中,print 不再是一个语句,而是一个函数,所以如果想要输出a,用法为print(a))。
在Tel中求1和10的和或者变量之间的加减乘除运算需要使用expr 命令,在python 则直接写表达式就可以了,如图 3 所示。
图3Python 很多功能都是靠模块实现的, 比如ftplib 模块负责ftp 功能的实现, math 模块囊括了基本数学公式,如果我们想要引用这些模块,需要使用命令import 模块名称,如import ftplib 和import math 。
如果想使用math 模块中的函数floor ,可以使用命令math.floor(28.5) ,语法为“模块. 函数”, 如果想要直接使用floor 函数,必须提前引用,命令为from math import floor , 那样就可以直接使用命令floor(28.5) 了。
如果觉得floor 这个函数名称太长了或者不好记忆,可以通过变量引用函数,如 f = math.floor ,这样变量 f 就充当了math.floor的功能了。
上面提到的模块ftplib 和math都是在python 安装的时候已经安装了,而接下来重点介绍的xlrd 、xlwt 、xlutils 模块都不是随python 安装的。
需要手动下载安装,第5节会详细介绍模块的安装。
当成功导入了某个模块后,可以通过函数dir ( 模块名) 查看这个模块包含哪些函数,如果对某个函数的作用不了解,可以通过help 函数查看,如help(math.pow)本文只是带领大家入门, python 的其他语法可以参考其它资料学习。
4 Tcl 对Excel 操作在使用python 对exeel 操作之前搜索过如何通过Tel 对exeel 操作, Tel 本身没有提供对excel 操作的命令,可以通过tcom 外部包来调用excel 的接口实现,但是个人感觉实现起来比较麻烦,msdn网站上虽然提供了excel的接口,但示例都是针对VB脚本语言写的,Tel如果想要调用的话还需要转换,如下是一段简单的Tcl 代码展示如何通过tcom 对excel 进行操作,但也花了本人不少时间琢磨。
# 加载tcom 包package require tcomset filename "F:/1.xls"#创建com实例,打开工作表,下面四句都是套路set excel [::tcom::ref createobject "Excel.Application"] set workbooks [$excel Workbooks]set workbook [$workbooks Open $filename]set worksheets [$workbook Worksheets]# "sheet1" 为sheet 的名称set worksheet [$worksheets Item "sheet1"]# 创建单元格对象set cells [$worksheet Cells]#给单元格B2赋值为“ hsdf ”$cells Item 2 B "hsdf"# 获取sheet 的个数并赋值给sheetCountset sheetCount [$worksheets Count]#获取A1至A15单元的范围对象set range [$worksheet Range A1 A15]#给A1至A15单元赋值$range Value2 "abcdefg"#获取A1至A15的值,并赋值给A,A是一个列表listset A [$range Value2]# 设置单元的背景色set interior [$range Interior]$interior Color [expr 0x00FFE0]# 设置单元的前景色和字体大小、加粗、斜体、字体set font [$range Font] $font Color [expr 0xFF0000]$font Bold 1$font Size 10$font Italic 0$font Name " 华文行楷"# 设置单元格的宽度为自动调整set entire [$range EntireColumn]$entire AutoFit# 保存文档$workbook Save# 显示Excel$excel Visible 15 xlwt 和xlrd 模块的安装Python 也是通过导入外部模块来实现对excel 的操作,xlrd 负责对excel 的读取,xlwt 负责对excel 的写入,xlutils 依赖于xlrd 和xlwt ,可以复制excel 文件。
这三个包都可以在网站下载。
本文使用的xlrd 版本为0.8.0 从网上下载好xlrd 和xlwt 后,解压缩到C 下,此时在命令行下输入import xlrd 或者import xlwt ,会出现提示ImportError: No module named xlwt ,这表明还没有安装xlwt 模块。
python 导入一个模块的过程要求有一个叫做“路径搜索”的操作过程,即是在文件系统“预先设定的区域”查找模块文件以加载模块的过程。
这个预先设定的区域其实是python 搜索路径的一组目录。
这个目录保存在sys.path 中,如果你想知道python 导入模块时会在哪些路径搜索模块,你可以执行以下命令查看搜索路径目录:>>> import sys>>> sys.path在sys.path 中找到一个路径为,所以我们把模块解压缩到这个目录下。
命令>>>') 在最后添加一个目录,') 在第一位插入一个目录。
解压缩完成并放在正确目录后,在cmd 下进入package 当前目录,然后输入命令“ C:\Python2.7.5 ”,安装完成后可以输入import xlrd ,dir(xlrd) 来确认是否已经安装正确。
6 xlrd 简单使用方法>>>import xlrdxlrd.open_workbook("C:\Users\HuZhangdong\Desktop\ASB >>>excel解 xlwt 的用法。
7 xlwt 简单使用方法#-*- coding: UTF-8 -*- # import os,xlwt,datetime #data =xlwt.Workbook() # 新建测试床环境信息图 .xls") # 打开文件并将对象存储到 excel 中 >>>sheet = excel.sheet_by_index(0) #通过索引读取 sheet 对象,第一个 sheet 的索引为 "0">>>row_3 = sheet.row_values(2) # 读取第 3 行的所有数据,并以列表的形式存储到 row_3 中>>>col_3 = sheet.col_values(2)#读取第 3 列的所有数据, 并以列表 list的形式存储到 col_3 中>>>cell_12_7 = sheet.cell_value(11,6) #读取第 12 行第 7 列的数据,并存储到 cell_12_7 中>>>cell_11_11 = sheet.cell(10,10).value#读取第 11行第 11 列的数据,并存储到 cell_11_11 中>>>cell_7_8 = sheet.row(6)[7].value 读取第 7 行第 8 列的数据 >>>cell_7_8 = sheet.cel(7)[6].value读取第 8 列第 7 行的数>>>num_rows = sheet.nrows 读取 sheet 的总行数 >>>num_cols = sheet.ncols 读取 sheet 的总列数基本上面的命令已经可以满足目前对excel 读取的操作了,接下给大家讲设置编码格式为 utf-8 导入模块一个Workbooksheet = data.add_sheet(u"sheet") # 新建一个sheet ,名称为'sheet' style1 = xlwt.XFStyle() # 创建格式style1style2 = xlwt.XFStyle()style3 = xlwt.XFStyle()#设置字体格式font1 = xlwt.Font() # 创建font1 = 'Times New Roman' # 字体为'Times New Roman'font1.bold = True # 加粗font1.colour_index = 2 # 字体颜色为红色,0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan# 设置上标font1.height = 0x190 #0x190 是16 进制,换成10进制为400,然后除以20,就得到字体的大小为20style1.font = font1 # 将创建的font1 字体格式应用到style1 上font2 = xlwt.Font() # 创建font2 = "Algerian" # 字体为'Algerian'font2.colour_index = 3 # 字体颜色为绿色斜体font2.italic = True #font2.struck_out = True # 删除线字体大小为30font2.height = 0x258 #上style2.font = font2 # 将创建的font2 字体格式应用到style2#设置列宽sheet.col(0).width = 6000sheet.col(1).width = 12000 sheet.set_col_default_width(2) #设置单元格对齐方式alignment = xlwt.Alignment() # 创建alignment style3.alignment = alignment #应用alignment 到style3 上#插入时间style3.num_format_str = 'YYYY-MM-DD HH:MM:SS' # 设置时间格式#设置单元格背景颜色pattern_yellow = xlwt.Pattern() # 创建pattern_yellowpattern_yellow.pattern_fore_colour = 5 # 设置填充颜色为yellow 黄色style1.pattern = pattern_yellow # 把设置的pattern 应用到style3 上pattern_red = xlwt.Pattern() # 创建pattern_redpattern_red.pattern_fore_colour = 2 # 设置填充颜色为red 红色style2.pattern = pattern_red # 把设置的pattern 应用到style4 上#设置单元格边框borders = xlwt.Borders() # gh 0x0D. borders.left_colour = 0x10 # borders.right_colour = 0x20创建bordersborders.top_colour = 0x30borders.bottom_colour = 0x40设置左边框线条颜色style1.borders = borders # 将borders 应用到style1 上sheet.write(3, 0, 'HuZhangdong', style1) #'HuZhangdong' ,格式引用 style1sheet.write(4, 0, 'YinMengran' , style2) #'YinMengran' ,格式引用 style2data.save(u'e:\\3.xls') #函数 xlwt.Workbook() 只能新建一个 excel 文档,不能打开一个已经存在的 文档,下一章会讲解如何通过 xlutils 修改一个已经存在的 excel 文档。