python操作excel

python操作exce的方式:

  • 使用win32com
  • 使用xlrd(读excel)、xlwt(写excel)

1.使用win32com方式

代码:

# coding=utf-8
from win32com.client import Dispatch
import pywintypes

‘‘‘
查看excel最大行数和列数
打开一个空白新建EXCEL表格,按CTRL+下箭头,可以查看到最大行数;按CTRL+右箭头,
可以查看到最大列标(若想显示列数,可在最右一列的某单元格中输入=column()回车,出现数字就是最大列数)。
‘‘‘

class Excel:
    def __init__(self, filename=None):
        self.excel = Dispatch(‘Excel.Application‘)  # 打开excel应用程序
        self.excel.DisplayAlerts = 0
        self.excel.Visible = 0
        if filename is not None:
            self.filename = filename
            self.workBook = self.excel.Workbooks.Open(filename)
        else:
            self.filename = ‘‘
            self.workBook = self.excel.Workbooks.Add()  # 新建excel

    # 保存excel文件
    def save(self, save_path=None):
        if not save_path:
            self.filename = save_path
            self.workBook.SaveAs(save_path)
        else:
            self.workBook.Save()

    # 关闭excel文件
    def close(self):
        self.workBook.Close(SaveChanges=0)

    # 添加工作表
    def addSheet(self, sheetName=None):
        sheet = self.workBook.Sheets.Add()
        if sheetName is not None:
            sheet.Name = sheetName

    def copySheet(self, srcSheetName, destSheetName=None, before=None):
        sheet = self.workBook.WorkSheets(srcSheetName)
        # 在指定工作表的后面插入新的工作表
        if before is None:
            sheet.Copy(None, sheet)
            newSheet = sheet.Next
            if destSheetName is not None:
                newSheet.Name = destSheetName
        # 在指定工作表的前面插入新的工作表
        else:
            sheet.Copy(before, None)
            if destSheetName is not None:
                index = before.Index - 1  # 所获新插入的工作表所在的位置(工作表的index从1开始)
                self.workBook.Sheets(index).Name = destSheetName

    # 删除工作表
    def deleteSheet(self, sheetName):
        try:
            sheet = self.workBook.WorkSheets(sheetName)
            if sheet is not None:
                sheet.Delete()
        except pywintypes.com_error:
            pass

    # 获取指定单元格的内容
    def getCell(self, sheet, row, col):
        workSheet = self.workBook.WorkSheets(sheet)
        return workSheet.Cells(row, col).Value

    # 设置单元格内容
    def setCell(self, sheet, row, col, val):
        workSheet = self.workBook.WorkSheets(sheet)
        workSheet.Cells(row, col).Value = val

    # 获取一块区域的内容
    def getRange(self, sheet, row1, col1, row2, col2):
        workSheet = self.workBook.WorkSheets(sheet)
        return workSheet.Range(workSheet.Cells(
            row1, col1), workSheet.Cells(row2, col2)).Value

    # 拷贝一块区域
    def copyRange(self, sheet, row1, col1, row2, col2, targetRow, targetCol):
        workSheet = self.workBook.WorkSheets(sheet)
        srcRange = workSheet.Range(
            workSheet.Cells(
                row1, col1), workSheet.Cells(
                row2, col2))
        targetRange = workSheet.Range(
            workSheet.Cells(
                targetRow, targetCol), workSheet.Cells(
                targetRow + row2 - row1, targetCol + col2 - col1))
        #targetRange.Value = srcRange.Value
        srcRange.Copy(targetRange)  # 与targetRange.Value = srcRange.Value效果相同

    # 移动一块区域
    def cutRange(self, sheet, row1, col1, row2, col2, targetRow, targetCol):
        workSheet = self.workBook.WorkSheets(sheet)
        srcRange = workSheet.Range(
            workSheet.Cells(
                row1, col1), workSheet.Cells(
                row2, col2))

        # 方案1
        #targetRange = workSheet.Range(workSheet.Cells(targetRow, targetCol), workSheet.Cells(targetRow + row2 - row1, targetCol + col2 - col1))
        # targetRange.Value = srcRange.Value
        # srcRange.Clear()  #清空原区域的值

        # 方案2
        # targetRange = workSheet.Range(workSheet.Cells(targetRow, targetCol), workSheet.Cells(targetRow + row2 - row1, targetCol + col2 - col1))
        # srcRange.Cut(targetRange)  #直接调用系统函数

        # 方案3与方案2类似
        srcRange.Cut(workSheet.Cells(targetRow, targetCol))

    # 清空指定区域内容
    def clearRange(self, sheet, row1, col1, row2, col2):
        workSheet = self.workBook.WorkSheets(sheet)
        srcRange = workSheet.Range(
            workSheet.Cells(
                row1, col1), workSheet.Cells(
                row2, col2))
        srcRange.Clear()

    # 添加图片
    def addPicture(self, sheet, pictureName, left, top, width, height):
        workSheet = self.workBook.WorkSheets(sheet)
        ‘‘‘,
AddPicture(self, Filename=<PyOleMissing object>, LinkToFile=<PyOleMissing object>,
>, Left=<PyOleMissing object>, Top=<PyOleMissing object>, Width=<PyOleMissing objec
hod of win32com.client.CDispatch instance
        ‘‘‘
        workSheet.Shapes.AddPicture(
            pictureName, 1, 1, left, top, width, height)

    # 删除指定行
    def deletRow(self, sheet, row):
        if row < 1 or row > 1048576:
            return
        deleteRow = self.workBook.WorkSheets(sheet).Rows(row)
        deleteRow.Delete()

    # 删除指定列
    def deleteCol(self, sheet, col):
        if col < 1 or col > 16384:
            return
        deleteCol = self.workBook.WorkSheets(sheet).Columns(col)
        deleteCol.Delete()

2.使用xlrd,xlwt操作excel

可参考:

http://xlwt.readthedocs.io/en/latest/

http://www.cnblogs.com/hupeng1234/p/6681830.html

http://www.cnblogs.com/hupeng1234/p/6681800.html

时间: 2024-10-01 11:46:17

python操作excel的相关文章

八、python操作excel及网络编程和异常处理

一.python操作excel 1.读excel,xlrd模块用来读excel # book = xlrd.open_workbook(r'students.xlsx')#打开excel# print(book.sheet_names())#获取所有sheet的名字# sheet = book.sheet_by_index(0)#根据sheet页的位置去取sheet# sheet2 = book.sheet_by_name('Sheet2')#根据sheet页的名字获取sheet页# print

python 操作 excel

python操作execel主要是读写 读 通过 http://pypi.python.org/pypi/xlrd 写 通过 http://pypi.python.org/pypi/xlwd 下载tar包,解压出来,安装即可, 如果没有权限,将xlrd/xlrd拷贝到当前目录下,也可以使用. 如下是xlrd的使用例子 1 # -*- coding: utf-8 -*- 2 import xdrlib ,sys 3 import xlrd 4 import sys 5 def open_excel

python 操作excel表格

Python 操作excel 表格 #coding=utf-8 import xlsxwriter #1.创建excel 对象 work = xlsxwriter.Workbook('hello.xlsk')#在当前目录下创建一个Excel文件 #2. 创建表格 worksheet = work.add_worksheet('int') #3.写入内容 title_index = ["A","B","C","D","

python基础(六)python操作excel

一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的.这几个模块使用pip安装即可,下面是这几个模块的使用. 二.xlrd模块,xlrd模块用来读excel,具体用法如下: import xlrd #打开excel wb=xlrd.open_workbook('abc.xlsx')#打开的这个excel必须存在,否则会报错 print(wb.shee

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

Python操作excel工具

python操作excel的工具类有很多,下面举几个常见的工具类: 一. 1.xlrd 只能读取excel操作,支持xls和xlsx两种格式的 2.xlwt 只能写入excel操作,只支持 xls格式的 3.xlsxwtiter 只能写入excel操作,同时支持xls格式和xlsx的 附python操作excel的常见参考链接: https://xlsxwriter.readthedocs.io/format.html https://blog.csdn.net/qq_24495287/arti

自动化办公:python操作Excel

1.安装 -- upgrade pippython -m pip install --- install pypipip install pypi 执行python setup.py install进行安装xlrd Python操作Excel,主要用到xlrd和xlwt这两个库,即xlrd是读Excel,xlwt是写Excel的库 pip install xlrdpip install xlwtpip install xlutilspip install xlsxwriter 2.操作一个简单的

Python操作Excel之数据提取

最近发现excel数据量极大,并且通过简单的数据操作不能提取到我需要的数据,如果单独操作,数据量太大耗时太长.想着通过简单的方式,并且快速提取数据,就想到了Python.python操作Excel使用的openyxl和pandas对Excel进行操作.代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020-02-24 下午 03:43 # @Author : Zhanxing # @Site : # @File : 提

Python操作Excel表格,xlwt模块的使用

Python可以操作Excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的) 按照模块使用pip install xlwt 就行了,很常规的方式 直接进代码解析,本文源码 wk = xlwt.Workbook(encoding="utf-8") sheet_test = wk.add_sheet("test") 第一句:创建一个工作簿,设置编码格式为"utf-8",默认格式是ASCII,为了方便写入中文,一般都要设置成U