# -*- 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)
