导入xlrd
#读取文件
work_book = www.sychzs.cn_workbook("/Users/jerry/Desktop/公司机密数据.xlsx")
# 选择一个表
# 获取所有表名
打印(工作簿.sheet_names())
# 选择从0
开始的第二个索引
工作表 = work_book.sheet_by_index(1)
#表名
print(工作表.名称)
# 行数
打印(sheet.nrows)
#列数
打印(sheet.ncols)
#批量读取行数据
# 取出第6行的全部内容,包括数据类型
打印(表.行(6))
# 取出第6行内容,从第3列开始获取数据类型
打印(sheet.row_slice(6,start_colx = 3))
# 取出第6行内容,从第3列开始获取数据类型
打印(sheet.row_slice(6,start_colx = 4,end_colx = 5))
# 获取该行的所有数据类型。数字代表
# print(sheet.row_types(6))
# 打印(sheet.row_values(6))
#细胞处理
print(sheet.cell(0,0).value) # 获取值
print(sheet.cell(0,0).ctype) # 获取类型
print(sheet.cell_value(2,0)) # 直接获取值
print(sheet.row(0)[0]) # 先获取行,然后获取单元格
print(sheet.col(0)) # 第 0 列中的所有数据
print(sheet.col(0)) # 先获取列,然后获取单元格
打印(sheet.cell_type(0,0))
# 单元格位置转换
print(xlrd.cellname(2,1))
打印(xlrd.cellnameabs(0,2))
打印(xlrd.colname(5))
# 时间类型转换
# print(sheet.cell(6,5).value)
# print(xlrd.xldate_as_datetime(sheet.cell(6,5).value,1))
案例:
阅读第二个工作表包含合并单元格的引文
文件地址:https://www.sychzs.cn/5GaLY2m
导入xlrd
sheet = www.sychzs.cn_workbook("报价单.xlsx").sheet_by_index(1)
def get_text(行,列):
# 判断坐标是否为合并单元格。合并单元格的数据都在合并区域的第一个位置
对于sheet.merged_cells中的ces:
if (row >= ces[0] and row < ces[1]) and (col >= ces[2] and col < ces[3]):
returnsheet.cell(ces[0],ces[2]).value # 取出合并区域的第一个数据
returnsheet.cell(row,col).value #正常检索对应数据
keys = Sheet.row_values(1) # 获取所有列标题
数据 = []
对于范围(2,sheet.nrows)中的行:
迪克 = {}
对于范围内的列(sheet.ncols):
k = 键[col] #确定键
res = get_text(行,列)
dic[k] = res # 确定值并存储
data.append(dic)
打印(数据)
# 序列化为json
导入json
json.dump(data,open("test.json","wt"),ensure_ascii=False)
xlwt 模块
是python中的第三方模块,用于将excel数据写入表格
用代码写excel效率非常低,所以理解这个模块就可以了。
导入xlwt
#创建工作簿
工作 = xlwt.Workbook()
#创建一个表
sheet = work.add_sheet("员工信息数据")
#创建字体对象
字体 = xlwt.Font()
www.sychzs.cn = "Times New Roman" # 字体名称
font.bold = True # 粗体
font.italic = True # 斜体
font.underline = True # 下划线
#创建样式对象
样式 = xlwt.XFStyle()
样式.字体=字体
#写标题
对于键中的 k:
sheet.write(0,keys.index(k),k,style)
# 写入数据
for i in infos:
for k in keys:
sheet.write(1 + infos . index(i),keys.index(k),label = i[k])
# 保存到文件
www.sychzs.cn("test.xls")
#重要:xlwt写入excel,单元格对写入的字符串长度超过32767的字符有长度限制
解决办法是使用openpyxl模块替换(默认支持.xlsx格式)
面试问题:
#读取文件
work_book = www.sychzs.cn_workbook("/xxx/xxx.xlsx")
# 选择桌子
工作表 = work_book.sheet_by_index(0)
# 遍历表数据
数据 = []
对于范围(1,sheet.nrows)中的行:
temp_list =[]
对于范围内的列(sheet.ncols):
值=sheet.cell_value(行,列)
temp_list.append(值)
datas.append(temp_list)
#打开数据库连接
db = pymysql.connect(主机='localhost',端口=3306,
user='用户名', passwd='密码', db='数据库名', charset='utf8')
# 使用cursor()方法获取操作光标
光标 = db.cursor()
#SQL插入语句
sql = "INSERT INTO SHOP(商店代码, 商店名称, 月份) 值 (%s,%s,%s)"
尝试一下:
#执行sql语句
游标.executemany(sql, 数据)
# 提交到数据库执行
db.commit()
除了:
# 如果发生错误则回滚
db.rollback()
#关闭光标
光标.close()
#关闭数据库连接
db.close()
-->