读取 CSV 文件( Panda 版)
读取
import pandas as pd
df = pd.read_csv('C:/expamle.csv');
获取总行数
df.shape[0]
获取执行列(知道列名的情况)
df['Cloumn Name']
读取某列的某个单元格
for row in range(0,df.shape[0]):
print(df['Column Name'][row]))
定义一个类型于 Jave 中 Map 的集合
定义
fieldMap = {}
赋值
fieldMap['field1'] = 'xxx'
读取
fieldMap['field1']
获取所有 key 值
fieldMap.keys()
读取 XML 文件(xml.etree.ElementTree 版)
读取
import xml.etree.ElementTree as ET
tree = ET.parse('example.xml')
获取所有的指定节点
root.findall('.//xxx')
读取 excel 文件(openpyxl 版本)
读取
from openpyxl import load_workbook
wb = load_workbook('your_file.xlsx')
读取指定 sheet
通过 sheet Name 读取
ws = wb['Sheet1']
ws.cell(row=2, column=3).value
通过索引读取某列
for row in userProfilePermissonMap_Layout.iter_rows(min_row=2,min_col=1, max_col=1, values_only=True):
print(row[0])
通过索引读取所有行数
for index in range(2, ws.max_row + 1):
通过索引获取指定单元格
ws.cell(row=2, column=3).value
获取行数/列数
ws.max_row
ws.max_column
创建一个新的 Sheet
ws2 = wb.create_sheet(title="MyNewSheet")
为单元格添加当前 Excel 其他 Sheet 的超链接
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.hyperlink import Hyperlink
# 创建一个新的工作簿
wb = Workbook()
# 选择第一个工作表
ws1 = wb.active
ws1.title = "Sheet1"
# 创建第二个工作表
ws2 = wb.create_sheet(title="Sheet2")
otherSheetName = "Sheet2"
# 在Sheet1的A1单元格中添加指向Sheet2的超链接
hyperlink = "#'"+ otherSheetName +"'!A1"
ws1['A1'].hyperlink = hyperlink
# 保存工作簿
wb.save("example.xlsx")
复制sheet
from openpyxl import load_workbook
# 加载工作簿
wb = load_workbook('your_file.xlsx')
# 选择源sheet和目标sheet
source = wb['Sheet1']
target = wb['Sheet2']
# 复制数据
for row in source.iter_rows():
row_data = [cell.value for cell in row]
target.append(row_data)
# 保存工作簿
wb.save('your_file.xlsx')
根据单元格的值删除某行
先获取需要删除的行, 删除的说还好从后面的行开始删除,
worksheet.delete_rows(row_num)
冻结 Excel 的首行
ws.freeze_panes = 'A2'
添加筛选
是通过列名进行添加, 比如 A1, B1
下面的代码是为所有列都添加筛选, 所以通过 max_column 获取最大的列数, 然后转成字母的列名
from openpyxl.utils import get_column_letter
ws.auto_filter.ref = 'A1:' + get_column_letter(ws.max_column) + '1'
把列的列数转成列名字
比如: 第 3 列 --> C列
get_column_letter(ws.max_column)
设置列宽
from openpyxl.utils import get_column_letter
# 固定列宽
ws.column_dimensions[column].width = 50
#通过单元格大小设置列宽
for col in ws.columns:
max_length = 0
column = get_column_letter(col[0].column) # Get the column name
for cell in col:
try: # Necessary to avoid error on empty cells
if len(str(cell.value)) > max_length:
max_length = len(cell.value)
except:
pass
adjusted_width = (max_length + 2)
ws.column_dimensions[column].width = adjusted_width
为单元格添加样式
from openpyxl.styles import PatternFill
from openpyxl.styles import Font
fieldHeadStyle = PatternFill('solid', fgColor='5ABCF6')
linkStyle = Font(color="0000FF", underline="single")
# 添加背景色
ws["A1"].fill = fieldHeadStyle
ws.cell(row=1, column= 1).fill = fieldHeadStyle
# 添加字体颜色和下划线
ws["A1"].font= linkStyle
ws.cell(row=1, column= 1).font= linkStyle
基本方法
for 循环
# 使用 range 函数表示范围, 不包含 3
for index in range(1,3):
# 类型 i -- 的效果
for index in range(6, 3, -1):
把 String 拆分成 List
s.split(',')
获取某个字符前的字符串
str.split('-',1)[0]