# -*- coding: UTF-8 -*- import openpyxl # openpyxl中列和行的起始标识都是1,不是从0开始 # # 从excel中读取出来的数据只有两种类型,即数值类型和字符串类型 # # 不要随便在表格中敲空格,会影响判断最大行数和最大列数 # # 运行操作excel的代码时,要先关闭在操作系统中打开的相关excel表,否则可能会无法读取/写入数据 # # 写入数据时要执行保存 def create_table(): # 创建一个工作簿 workbook = openpyxl.Workbook() # 创建一个表单 sheet = workbook.create_sheet('sheet') # 写入一个数据 sheet.cell(row=1, column=1, value="python") # 保存 workbook.save('test1.xlsx') def load_table(): # 打开工作簿 workbook = openpyxl.load_workbook(u"Book.xlsx") # 获取表单 sheet_name = workbook['Sheet1'] # 读取指定的单元格数据 cell_value = sheet_name.cell(row=1, column=2).value #学号 print(cell_value) #读取A6单元格的值 cell_A6 = sheet_name['A6'].value print(cell_A6) #读取第3行, 第4列单元格的值 cell_3_4 = sheet_name.cell(row=3, column=4).value print(cell_3_4) #往单元格写入数据 cell_3_5 = sheet_name.cell(row=3, column=5, value='testsdfsdfsdf') print(sheet_name.cell(row=3, column=5).value) #获取表单数据的总行数 print(sheet_name.max_row) #获取表单数据的总列数 print(sheet_name.max_column) #获取按行所有的数据 rows_data = sheet_name.rows #print(list(rows_data)) for row in list(rows_data): case = [] for i in row: #使用eval(数据) 将str类型转换为他原来的类型 case.append("%s" % i.value) print(case) #获取按列所有的数据,# 按列读取所有数据,每一列的单元格放入一个元组中 ## 直接打印,打印结果是一个可迭代对象,我们可以转换成列表来查看 columns_data = sheet_name.columns print(list(columns_data)) workbook.close() #load_table() def test_write(): book = openpyxl.load_workbook(u'Book.xlsx') sheet = book['Sheet1'] sheet.cell(6, 1).value = 'name' sheet.cell(7, 1).value = '姓名' sheet.cell(8, 1).value = '林新发' sheet.cell(9, 1).value = '林li' book.save(u'Book.xlsx') book.close() #test_write() def write_table(): # 打开工作簿 workbook1 = openpyxl.load_workbook(u"Book.xlsx") # 获取表单 sheet_name = workbook1['Sheet1'] # 写入一个数据 sheet_name.cell(5, 5).value = '和平' sheet_name.cell(6, 5).value = '众生' sheet_name.cell(7, 5).value = '不同' # 保存 workbook1.save(u"Book.xlsx") workbook1.close() write_table() def test_1(): book = openpyxl.load_workbook(u'我的表格.xlsx') if None != book[u'我的Sheet']: print('我的Sheet 存在') book.close() def test_2(): book = openpyxl.load_workbook(u'我的表格.xlsx') sheet = book.create_sheet('我的Sheet') book.save(u'我的表格.xlsx') book.close() #遍历所有表名 def test_3(): book = openpyxl.load_workbook(u'我的表格.xlsx') for sheet_name in book.sheetnames: print(sheet_name) book.close() def compare_rows():

# -*- coding: UTF-8 -*- import openpyxl import sys reload(sys) sys.setdefaultencoding("utf-8") def write_table(filename, sheetname, row, col, value): # 打开工作簿 workbook1 = openpyxl.load_workbook(filename) # 获取表单 sheet_name = workbook1[sheetname] # 写入一个数据 sheet_name.cell(row, col).value = value # 保存 workbook1.save(filename) workbook1.close() def do_linbell(): wb = openpyxl.load_workbook(u"C:\Users\Dell\Desktop\订单\linbell-01.xlsx") sheet_name_1 = wb[u'订单列表'] sheet_name_2 = wb[u'宝贝列表'] sheet_name_3 = wb[u'result'] sheet_name_3.cell(1, 1).value = u"订单号" sheet_name_3.cell(1, 2).value = u"产品编码" sheet_name_3.cell(1, 3).value = u"标题" sheet_name_3.cell(1, 4).value = u"买家实际支付金额" sheet_name_3.cell(1, 5).value = u"购买数量" sheet_name_3.cell(1, 6).value = u"退款金额" sheet_name_3.cell(1, 7).value = u"订单状态" sheet_name_3.cell(1, 8).value = u"销售收入" for i in range(2, sheet_name_1.max_row+1): #订单号 #print(i, sheet_name_1.cell(i, 1).value) sheet_1_id = sheet_name_1.cell(i, 1).value for j in range(2, sheet_name_2.max_row+1): sheet_2_id = sheet_name_2.cell(j, 1).value.strip('"').strip('="') if sheet_1_id == sheet_2_id: # 订单号 #标题 title = sheet_name_2.cell(j, 2).value.strip('"').strip('="') #产品编码 prod_code = sheet_name_2.cell(j, 10).value.strip('"').strip('="') #print("%s, %s, %s" % (sheet_1_id, title, prod_code)) #sheet_name_1.cell(i, 71).value = prod_code #买家实际支付金额 money = sheet_name_1.cell(i, 10).value #print(money) #购买数量 num = sheet_name_1.cell(i, 27).value # print(num) #退款金额 back_money = sheet_name_1.cell(i, 52).value #print(back_money) #订单状态 status = sheet_name_1.cell(i, 12).value #print(status) #销售收入 sum_money = (int(money) - int(float(back_money))) * int(num) print(i, sheet_1_id, prod_code) sheet_name_3.cell(i, 1).value = sheet_1_id sheet_name_3.cell(i, 2).value = prod_code sheet_name_3.cell(i, 3).value = title sheet_name_3.cell(i, 4).value = money sheet_name_3.cell(i, 5).value = num sheet_name_3.cell(i, 6).value = back_money sheet_name_3.cell(i, 7).value = status sheet_name_3.cell(i, 8).value = sum_money wb.save(u"C:\Users\Dell\Desktop\订单\linbell-01.xlsx") wb.close() #do_linbell() def compare_row(): wb = openpyxl.load_workbook(u"C:\Users\Dell\Desktop\订单\linptech-01.xlsx") sheet_name_1 = wb[u'sheet'] #sheet_name_2 = wb[u'sheet1'] sheet_name_3 = wb[u'sheet2'] sheet_1_list = [] result = [] for i in range(2, sheet_name_1.max_row+1): sheet_1_id = sheet_name_1.cell(i, 1).value sheet_1_list.append(sheet_1_id) sheet_2_list = [] for j in range(2, sheet_name_3.max_row+1): sheet_2_id = sheet_name_3.cell(j, 1).value.strip('"').strip('="') sheet_2_list.append(sheet_2_id) for i in sheet_1_list: for j in sheet_2_list: if i not in sheet_2_list: #print i result.append(i) for l1 in (set(result)): print int(l1) pass compare_row() def write_table1(filename, sheetname, result): # 创建一个工作簿 workbook = openpyxl.Workbook() # 创建一个表单 sheet = workbook.create_sheet(sheetname) sheet.cell(1, 1).value = u"订单号" sheet.cell(1, 2).value = u"产品编码" sheet.cell(1, 3).value = u"标题" sheet.cell(1, 4).value = u"买家实际支付金额" sheet.cell(1, 5).value = u"购买数量" sheet.cell(1, 6).value = u"退款金额" sheet.cell(1, 7).value = u"订单状态" for i in range(len(result)): for list1 in result[i]: print list1 sheet.cell(i+2, 1).value = long(list1[0]) sheet.cell(i+2, 2).value = str(list1[1]) sheet.cell(i+2, 3).value = str(list1[2]) sheet.cell(i+2, 4).value = str(list1[3]) sheet.cell(i+2, 5).value = str(list1[4]) sheet.cell(i+2, 6).value = str(list1[5]) sheet.cell(i + 2, 6).value = str(list1[6]) sheet.cell(i + 2, 6).value = str(list1[7]) # 保存 workbook.save(filename) workbook.close() #write_table1("result.xlsx", "result", result)