Python读写Excel文件

介绍

在立管线型初步设计结束后, 需要统计所有工况下的弯矩、剪力的极大值情况以及此情况对应的 x 、y 方向分量, 才能进行下一步极值工况分析。 但在使用 Orcaflex 批处理提取结果时, 只能提取弯矩、剪力及对应的 x 、y 方向分量在时域上的极值(range graph Max), 而直接输出时域结果则数据众多, 手动提取极其费力, 因此写了个 Python 脚本自动找到最大的弯矩并把对应分量提取出来。

代码实现

模块列表

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。

数据格式

数据格式

表格的列代表不同时刻下力的数值,以弯矩为例,需要将弯矩的一列的所有数据读完,共16002个数据,然后返回 Max Bending Moment 所对应的行的数据,即为弯矩最大时刻立管接头处的受力状态。

基本语法

xlrd

1、导入模块
import xlrd
2、打开Excel文件读取数据
data = xlrd.open_workbook(‘excel.xls’)
3、获取一个工作表
① table = data.sheets()[0] #通过索引顺序获取
② table = data.sheet_by_index(0) #通过索引顺序获取
③ table = data.sheet_by_name(u’Sheet1’)#通过名称获取
4、获取整行和整列的值(返回数组)
table.row_values(i)
table.col_values(i)
5、获取行数和列数 
table.nrows
table.ncols
6、获取单元格
table.cell(0,0).value
table.cell(2,3).value

xlwd

写excel表要用到xlwt模块,官网下载(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、导入模块
import xlwt

2、创建workbook(其实就是excel,后来保存一下就行)
workbook = xlwt.Workbook(encoding = ‘ascii’)

3、创建表
worksheet = workbook.add_sheet(‘My Worksheet’)

4、往单元格内写入内容
worksheet.write(0, 0, label = ‘Row 0, Column 0 Value’)

5、保存
workbook.save(‘Excel_Workbook.xls’)

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
##!/usr/bin/env python
# coding=utf-8
import xlrd
import xlwt
path = 'C:\\Users\\jared\\Desktop\\test.xlsx'
data = xlrd.open_workbook(path)
ENDB = [[10,8],[18,2],[8,12]]
ENDA = [[3,9],[18,10],[11,11],[14,6]]
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('ENDB')
for j in range(0,len(ENDB)):
table = data.sheet_by_name(str(ENDB[j][0]))
nhang = table.nrows
nlie = table.ncols
ycols = []
xrows = []
for i in range(1, nhang - 1): # 提取某列
ycols = ycols + [table.cell(i, ENDB[j][1]).value]
xmax = ycols.index(max(ycols)) + 1
for i in range(1, nlie):
xrows = xrows + [table.cell(1, i).value]
if j == 0:
worksheet.write(0, i, table.cell(0, i).value)
worksheet.write(j+1, i, table.cell(xmax, i).value)
workbook.save('100rd-float.xls')

不足

  1. 本来想写个函数或者类,然后把数据读取后调用,但 data 是模块里的对象,好像不能直接作为变量输入函数。后来只好写了个嵌套循环。
  2. 程序比较简单,而且并不是完全自动化操作,需要手动设置一些数据。

本文标题:Python读写Excel文件

文章作者:微石

发布时间:2017年10月06日 - 15:10

最后更新:2018年07月19日 - 11:07

原始链接:akihoo.github.io/posts/3745ed0c.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。