>  기사  >  백엔드 개발  >  파이썬은 테이블을 어떻게 처리합니까?

파이썬은 테이블을 어떻게 처리합니까?

coldplay.xixi
coldplay.xixi원래의
2020-06-10 15:37:597227검색

파이썬은 테이블을 어떻게 처리합니까?

파이썬은 테이블을 어떻게 처리하나요?

Python이 테이블을 처리하는 방법:

Python은 Excel을 작동하기 위해 주로 xlrd와 xlwt 두 라이브러리를 사용합니다. 즉, xlrd는 Excel을 읽기 위한 라이브러리이고 xlwt는 Excel을 작성하기 위한 라이브러리입니다. https://pypi.python.org/pypi에서 다운로드할 수 있습니다. 다음은 각각 Python 읽기 및 쓰기 Excel을 기록합니다.

Python에서 Excel 작성 - xlwt

Python에서 Excel 작성의 어려움은 통합 문서 자체를 구성하는 것이 아니라 데이터를 채워 넣는 데 있지만 이는 범위에 포함되지 않습니다. 엑셀을 작성하는 데에도 까다로운 문제가 있습니다. 예를 들어 병합된 셀을 작성하는 것은 더 번거롭고 작성 스타일도 다릅니다.

상세 코드는 다음과 같습니다.

import xlwt
#设置表格样式
def set_style(name,height,bold=False):
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = name
font.bold = bold
font.color_index = 4
font.height = height
style.font = font
return style
#写Excel
def write_excel():
f = xlwt.Workbook()
sheet1 = f.add_sheet('学生',cell_overwrite_ok=True)
row0 = ["姓名","年龄","出生日期","爱好"]
colum0 = ["张三","李四","恋习Python","小明","小红","无名"]
sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True))
#写第一列
for i in range(0,len(colum0)):
sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True))
sheet1.write(1,3,'2006/12/12')
sheet1.write_merge(6,6,1,3,'未知')#合并行单元格
sheet1.write_merge(1,2,3,3,'打游戏')#合并列单元格
sheet1.write_merge(4,5,3,3,'打篮球')
f.save('test.xls')
if __name__ == '__main__':
write_excel()

결과 사진:

파이썬은 테이블을 어떻게 처리합니까?

여기서는 위와 같이 write_merge() 사용법에 대한 간략한 설명: sheet1.write_merge(1,2,3,3,'playing) games') 즉, 2번째와 3번째 열을 4개 열로 병합하면 병합된 셀 내용이 "Total"이 되고 스타일이 설정됩니다. 그 중 모든 매개변수는 0부터 계산됩니다.

Python은 Excel을 읽습니다 - xlrd

Python은 Excel 테이블을 읽습니다. xlwt에 비해 xlrd는 더 많은 인터페이스를 제공하지만 이 프로세스에는 날짜 읽기 및 병합된 셀 내용 읽기와 같은 몇 가지 귀찮은 문제도 있습니다.

먼저 기본 작업을 살펴보겠습니다.

파이썬은 테이블을 어떻게 처리합니까?

전체적인 아이디어는 파일을 열고, 테이블을 선택하고, 행과 열 내용을 읽고, 테이블의 데이터를 읽는 것입니다.

자세한 코드는 다음과 같습니다.

import xlrd
from datetime import date,datetime
file = 'test3.xlsx'
def read_excel():
wb = xlrd.open_workbook(filename=file)#打开文件
print(wb.sheet_names())#获取所有表格名字
sheet1 = wb.sheet_by_index(0)#通过索引获取表格
sheet2 = wb.sheet_by_name('年级')#通过名字获取表格
print(sheet1,sheet2)
print(sheet1.name,sheet1.nrows,sheet1.ncols)
rows = sheet1.row_values(2)#获取行内容
cols = sheet1.col_values(3)#获取列内容
print(rows)
print(cols)
print(sheet1.cell(1,0).value)#获取表格里的内容,三种方式
print(sheet1.cell_value(1,0))
print(sheet1.row(1)[0].value)

실행 결과는 다음과 같습니다.

파이썬은 테이블을 어떻게 처리합니까?

여기서 문제가 발생합니다. 위 실행 결과의 빨간색 프레임 필드는 분명히 생년월일이며 표시된 부동 소수점 숫자는 실제로입니다. 부동 소수점 숫자, 동시에 병합된 셀에 내용이 있어야 하며 결과는 비어 있을 수 없습니다.

걱정하지 마세요. 다음 두 가지 문제를 하나씩 해결해 보겠습니다.

1. Python이 Excel에서 셀의 내용을 날짜로 읽는 방법

Excel에서 셀의 내용을 읽을 때 Python이 반환하는 유형은 5가지입니다. 위 예의 ctype:

ctype: 0 공백, 1 문자열, 2 숫자, 3 날짜, 4 부울, 5 오류

즉, date=3의 ctype을 사용하려면 xlrd의 xldate_as_tuple을 사용해야 합니다. 먼저 Xldate는 테이블의 ctype=3이라고 판단되는 경우에만 작업을 시작할 수 있습니다.

상세 코드는 다음과 같습니다.

import xlrd
from datetime import date,datetime
print(sheet1.cell(1,2).ctype)
date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode)
print(date_value)
print(date(*date_value[:3]))
print(date(*date_value[:3]).strftime('%Y/%m/%d'))

파이썬은 테이블을 어떻게 처리합니까?

2. 병합된 셀의 내용 가져오기

작업에 앞서 merged_cells()가 반환하는 네 가지 매개 변수의 의미는 다음과 같습니다. row, row_range, col,col_range), 여기서 [row, row_range)는 행을 포함하고 row_range를 포함하지 않습니다. col의 경우에도 마찬가지입니다. 즉, (1, 3, 4, 5)는 행 1~2(제외)를 의미합니다. 3) 병합됩니다. (7, 8, 2, 5)는 열 2에서 4까지 병합을 의미합니다.

상세 코드는 다음과 같습니다.

print(sheet1.merged_cells)print(sheet1.cell_value(1,3))
print(sheet1.cell_value(4,3))
print(sheet1.cell_value(6,1))

파이썬은 테이블을 어떻게 처리합니까?

패턴을 찾으셨나요? 예, merge_cells에서 반환된 행과 열의 낮은 인덱스를 얻으세요! 따라서 다음과 같이 일괄적으로 얻을 수 있습니다.

자세한 코드는 다음과 같습니다.

merge = []
print(sheet1.merged_cells)
for (rlow,rhigh,clow,chigh) in sheet1.merged_cells:
merge.append([rlow,clow])
for index in merge:
print(sheet1.cell_value(index[0],index[1]))

실행 결과는 다음과 같이 그림과 동일합니다.

파이썬은 테이블을 어떻게 처리합니까?

추천 튜토리얼: "python"

위 내용은 파이썬은 테이블을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.