首先已有一个excel表格,它的地址作为一个函数变量的输入
这个函数用来实现excel中的第3列进行筛选,若为‘SOIL’,往下搜索,找到‘SOIL’段的结束位置。对这些行的第九列找最大值,并存放在这些行中的最后一行,对第十列做同样的行为。遍历整个文本文件。
做了小个软件(含有此函数)用在工程的受力分析的一个小环节。(第一次处理excel文件 使用了两个库,感觉有点乱)
import xlrd #注意要用1.2.0版本,别的版本无法对excel进行写操作
from openpyxl import load_workbook
def process_excel(filename): #filename 为导出的excel文件
workbook = xlrd.open_workbook(filename)
sheet1_object = workbook.sheet_by_index(0)
wb = load_workbook(filename)
sheetnames = wb.sheetnames
sheet = wb[sheetnames[0]]
nrows = sheet1_object.nrows
max8 = 0
max9 = 0
i = 0
txt_renew = os.path.join(os.path.dirname(filename), 'renew.txt')
while True:
i = i + 1
if i >= nrows: break
cell_value= sheet1_object.cell_value(rowx=i, colx=2)
if cell_value =='SOIL':
max8 = 0
max9 = 0
start = i
j = i
while True:
cell_value0 = sheet1_object.cell_value(rowx=j, colx=2)
if cell_value0 != 'SOIL': break
j = j + 1
end = j
print(end)
i = end
for j in range(start,end): #第九列循环从start到end行找最大值,虽然是第九列,但是列编号为8
v8 = sheet1_object.cell_value(rowx=j, colx=8)
if abs(eval(v8))>abs(max8):
max8 = eval(v8)
sheet.cell(end, 9, max8) #在表格中修改第9列每段末尾的值,用max8替换他 用到了xlrd
print(max8)
for j in range(start,end):
v9 = sheet1_object.cell_value(rowx=j, colx=9)
if abs(eval(v9))>abs(max9):
max9 = eval(v9)
#replace_word_in_line(filename1, end, word_position=9, new_word=str(max9))
print(max9)
sheet.cell(end, 10, max9) #在表格中修改第10列每段末尾的值,用max9替换他
with open(txt_renew, 'w',encoding="utf-8") as file: #整体输出
file.writelines(lines)
wb.save(filename)
#txt_file = os.path.join(os.path.dirname(excel_file), 'renew.txt')