python处理excel表格

python 处理excel表格

导入xlrd模块,pandas模块
此脚本可以对excel进行处理,可以检测合并单元格,垂直水平合并都可以.
此脚本还引入pandas模块,可以对矩阵化的excel进行类似数据库一样的分析处理

# -*- coding: utf-8 -*-
import xlrd
import json
import pandas as pd
from collections import OrderedDict
#默认表格从第二行第二列开始
class Excel_to_json(object):
	def __init__(self,filename):
		self.__workbook=xlrd.open_workbook(filename)#获取excel文件
		self.__sheet_total_num=len(self.__workbook.sheet_names())
	def sheet_to_array(self,index):
		sheet=self.__workbook.sheet_by_index(index)#按照索引读取表信息
		rowend=sheet.nrows-1#结束行行号
		colend=sheet.ncols-1#结束列列号
		rowstart=2#起始行号
		colstart=1#起始列号
		keys=sheet.row_values(1)
		keys.pop(0)
		array_in=[]
		for row_num in range(rowstart,rowend+1):
			elem_list=sheet.row_values(row_num)
			elem_list.pop(0)
			array_in.append(elem_list)
		merge_list=sheet.merged_cells
		merge_result=[]
		for item in merge_list:
			item=list(item)
			item[0]=item[0]-2
			item[1]=item[1]-2
			item[2]=item[2]-1
			item[3]=item[3]-1
			merge_result.append(item)
		if merge_list:
			for item in merge_result:
				for row_index in range(item[0],item[1]):
					for col_index in range(item[2],item[3]):
						array_in[row_index][col_index]=array_in[item[0]][item[2]]
		return array_in,keys
	#转换为dataframe
	@staticmethod
	def to_dataframe(array,keys):
		df=pd.DataFrame(data=array,columns=keys)
		return df
	#转换为json格式
	def to_json(self,df):
		temp_json=df.to_json(orient='records',force_ascii=False)
		temp_json=eval(temp_json)
		return json.dumps(temp_json,indent=4,ensure_ascii=False)
if __name__ == '__main__':
	test=Excel_to_json('./test2.xlsm')#这里填写excel路径
	array1,keys1=test.sheet_to_array(0)#转为矩阵
	array2,keys2=test.sheet_to_array(1)
	array3,keys3=test.sheet_to_array(2)
	df1=test.to_dataframe(array1,keys1)#转为dataframe
	df2=test.to_dataframe(array2,keys2)
	df3=test.to_dataframe(array3,keys3)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值