import xlrd
import xlwt

 import xlutils

 import win32com


#xlrd

#打开excel

data = xlrd.open_workbook("I+P.xls")

#查看文件中包含sheet的名称

sheetNames = data.sheet_names()

#得到第一个工作表,或者通过索引顺序或工作表名称

firstTable = data.sheets()[0]

firstTable1 = data.sheet_by_index(0)

# print firstTable

# print firstTable1

#获取行数和列数

nrows = firstTable.nrows

ncols = firstTable.ncols

# print nrows,ncols

#获取正行或整列的值(数组)

test1 = firstTable.row_values(1)

test2 = firstTable.col_values(1)


# print test1,test2


#单元格

cell_A1 = firstTable.cell(0,0).value

cell_C4 = firstTable.cell(2,3).value

#

# print cell_A1

# print cell_C4


#分别使用行列索引

cell_A1 = firstTable.row(0)[0].value

cell_A2 = firstTable.col(1)[0].value


print cell_A1

print cell_A2


# #xlwt

# #新建一个excel文件

# file = xlwt.Workbook()

# #新建一个sheet

# table = file.add_sheet("yanshan",cell_overwrite_ok=True)

# #cell_overwirte_ok参数控制单元格是否能够重写

# #写入数据table.wirte(行,列,value)

# table.write(0,1,"yanshan")

# table.write(0,0,"test")

# table.write(1,1,"jialing")

# table.write(1,2,u"知青")

#

# #另外,可以使用style

# style = xlwt.XFStyle()#初始化样式

# font = xlwt.Font()#为样式创建字体

# font.name = "Times New Roman"

# font.bold = True

# style.font = font#为样式设置字体

# table.write(5,5,"some bold Times text",style)

#

# #保存文件

# file.save("demo.xls")


# #xlutils,具体操作实例

# from xlrd import open_workbook

# from xlutils.copy import copy

#

# rb = open_workbook(u"I+P.xls", formatting_info=True)

# #参数formatting_info=True带格式拷贝

# wb = copy(rb) #经过copy后得到的wb就是可写的Workbook对象了

# #注:不支持图片拷贝,且支持的颜色种类较少

# #对其进行写操作

# ws = wb.get_sheet(2)

# ws.write(2, 0, "changed!")

#

# wss = wb.add_sheet("1223", 1)

# wss.write_merge(2, 2, 0, 5, "changed!")

# # wss.wirte(2, 0, "123")

#

# wb.save("I+P.xls")


#win32com

# 调用com组件操作Excel,大部分函数调用类似VBA(可查看VBA帮助文档)

# 操作步骤:

# 连接COM库


xlsApp = win32com.cllient.Dispatch("Excel.Application")

xlsApp = win32com.client.DispatchEx("Excel.Application")


#区别:DispatchEx新建一个Excel进程

#创建表(或打开)

book = xlsApp.Workbooks.Open(filename)

#新建

book = xlsApp.Workbooks.Add()

#获取页签

sheet = book.Wooksheets(n) #n为名字或索引

#添加页签

sheet = book.Wooksheets.Add(name)

#页签句柄属性

sheet.name

#删除页签

Worksheets(n).Delete()

#单元格赋值

sheet.Cells(r,c).Value

#保存工作表

book.Save()

book.SaveAs(filename)

#关闭工作表

books.Close(SaveChange  =  False)

#关闭COM组件

xlsApp.Application.Quit()

del xlsApp


#删除行/列

sheet.Rows(r).Delete

sheet.Columns(r).Delete

#设置所有行/列高

sheet.Rows.RowsHeigh

sheet.Columns.ColumnWidth

#Excel拷贝对象:

sheet1.copy(sheet2) #页签拷贝

Range1.copy(Range2) #范围拷贝


#多线程操作Excel使用的特殊函数(动态链接):

pythoncom.CoInitialize() #开辟套件

pythoncom.CoUnInitialize()  #回收套件