python 对excel操作

小利 2012-12-07 10:01:34
需求:一个test.xls文件,有一列为“成绩”(0-100分),现在想将成绩小于60的成绩修改成60分。
我想用python实现这个对xls操作的脚本,其中涉及到对xls的读,修改单元格中的值并写回。
之前尝试过xlrd和xlwt,似乎不是很好用,感谢大牛给出操作的源码。

如果使用win32com.client这个类库,如何实现合并单元格呢?
...全文
729 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crystal_暖暖 2014-02-27
  • 打赏
  • 举报
回复
zhaoqfeng 2012-12-13
  • 打赏
  • 举报
回复
引用 3 楼 ALEXSUNRISE 的回复:
引用 1 楼 zhaoqfeng 的回复: 我用你给的代码怎么就出现下面的错误呢? File "C:\work\Compare1.py", line 168, in getCell return sht.Cells(row, col).Value File "C:\Python27\lib\site-packages\win32com\client……
行,列序号都是以1开始的,而不是0。
小利 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 zhaoqfeng 的回复:
我用你给的代码怎么就出现下面的错误呢? File "C:\work\Compare1.py", line 168, in getCell return sht.Cells(row, col).Value File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 192, in __call__ return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None) com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, None, None, None, 0, -2146827284), None)
小利 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 zhaoqfeng 的回复:
自己用到的代码,供参考,Excel 2003测试没有问题。 Python code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#!/usr/bin/env python#-*- codin……
我用你给的代码怎么就出现下面的错误呢? File "C:\work\Compare1.py", line 168, in getCell return sht.Cells(row, col).Value File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 192, in __call__ return self._get_good_object_(self._oleobj_.Invoke(*allArgs),self._olerepr_.defaultDispatchName,None) com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, None, None, None, 0, -2146827284), None)
Gloveing 2012-12-12
  • 打赏
  • 举报
回复
引用 2 楼 ALEXSUNRISE 的回复:
引用 1 楼 zhaoqfeng 的回复:自己用到的代码,供参考,Excel 2003测试没有问题。 Python code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960#!/usr/bin……
使用代码之前,如果你已经开启了excel,先把它关了在调用代码
黄哥Python培训 2012-12-12
  • 打赏
  • 举报
回复
如何用python和xlwt写excel文件,并设置单元格字体、字体大小、颜色等 请参考我的代码 http://www.qy7788.com.cn/shiyongxinxi/shiyongxinxi77.html
zhaoqfeng 2012-12-07
  • 打赏
  • 举报
回复
自己用到的代码,供参考,Excel 2003测试没有问题。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import win32com.client
import os.path

class easyExcel(object):
    '''A utility to make it easier to get at Excel.'''

    def __init__(self, filename=None, UpdateLinks=0, ReadOnly=False):
        self.xlsApp = win32com.client.Dispatch('Excel.Application')
        self.Visible = False
        if filename:
            if not os.path.exists(filename):
                raise '%s not found!' %(filename)
            self.filename = filename
            self.xlsBook = self.xlsApp.Workbooks.Open(filename, UpdateLinks, ReadOnly)
        else:
            self.filename = ''
            self.xlsBook = self.xlsApp.Workbooks.Add()

    def save(self, newfilename=None):
        if newfilename:
            self.filename = newfilename
            self.xlsBook.SaveAs(newfilename)
        else:
            self.xlsBook.Save()

    def close(self):
        '''Rembering to save before Close'''
        self.xlsBook.Close(SaveChanges = 0)
        del self.xlsApp

    def getCell(self, sheet, row, col):
        '''Get Value of one Cell'''
        sht = self.xlsBook.Worksheets(sheet)
        return sht.Cells(row, col).Value

    def setCell(self, sheet, row, col, value):
        '''Set Value of one Cell'''
        sht = self.xlsBook.Worksheets(sheet)
        sht.Cells(row, col).Value = value

    def getRowsCount(self, sheet):
        sht = self.xlsBook.Worksheets(sheet)
        return sht.UsedRange.Rows.Count

    def mergeCells(self, sheet, row1, col1, row2, col2):
        sht = self.xlsBook.Worksheets(sheet)
        sht.Range(sht.Cells(row1, col1), sht.Cells(row2, col2)).Merge()

if __name__ == '__main__':
    xls = easyExcel(r'D:\test.xls')
    for row in range(1, 8):
        val = xls.getCell('Sheet1', row, 1)
        print(type(val), val)

    xls.mergeCells('Sheet1', 2, 2, 6, 6)
    xls.save()
    xls.close()

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧