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`属性选择第一个工作表。
- 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 文档。