python中一般使用 xlwt (excel write)来生成Excel文件(可以控制单元格格式),用 xlrd 来读取Excel文件,用xlrd读取excel是不能对其进行操作的.
1、xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。
2、xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。
下面展示一下在flask项目中生成excel文件
代码Demo:
from flask imprt send_file, make_response
import xlwt,xlrd
# 生成写入
def taskinfo_excel_fun():
wb = xlwt.Workbook() # 创建excel文件
sheet = wb.add_sheet('My Sheet') # 为第一个表命名
content = [
['姓名', '性别', '年龄', '身高'],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
]
for i in range(len(content)):
for j in range(len(content[i])):
sheet .write(i, j, content[i][j])
# 也可以指定数据的格式样式
# style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00')
# style1 = xlwt.easyxf(num_format_str='D-MMM-YY')
# sheet.write(0, 0, 1234.56, style0)
# sheet.write(1, 0, datetime.now(), style1) 结果样式 见图三
file_path = os.path.join(os.getcwd(), UPLOAD_FOLDER) # 指定要保存的目录 if not os.path.exists(file_path): # 如果目录不存在,生成
os.mkdir(file_path)
file_path2 = file_path+'example.xls' # 文件的绝对路径
wb.save(file_path2)
return make_response(send_file(file_path2)) # 直接在前端页面生成要下载的文件 # 读取
def taskinfo_read_excel(file_path2):
import xlrd
book = xlrd.open_workbook(file_path2) # 读取excel文件对象 sheet_name = book.sheet_names() # ['A Test Sheet'] 获取所有的表名 以列表形式
print(sheet_name) sheet = book.sheet_by_name(sheet_name[0]) # 根据表名获取表对象
sheet = book.sheet_by_index(0) # 根据索引获取表对象
nrows = sheet.nrows
ncols = sheet.ncols # 获取一共有 多少行和列 有数据
print(nrows)
print(ncols) row_data = sheet.row_values(0) # 获取某行的所有数据 列表形式 ['姓名', '性别', '年龄', '身高']
col_data = sheet.col_values(0) # 列 数据 ['姓名', 1.0, 2.0, 3.0]
print(row_data)
print(col_data)
cell_value = sheet.cell_value(3, 0) # 获取指定单元格数据:3.0
print(cell_value)
cell_value = sheet.cell(3,0).value # 获取数据
cell_value = sheet.row(3)[0].value # 获取数据
cell_value = sheet.col(0)[3].value #获取数据
cell_value2 = sheet.cell(3, 0) # number:3.0 包含数据的类型
print(cell_value2)
图一:页面生成文件
图二:打开文件后
图三: