import win32com.client
import os.path as osp
import datetime
class excel (object):
def __init__( self ):
self.com = win32com.client.Dispatch('Excel.Application')
def qquit( self ): self.com.Quit
def __del__( self ): self.qquit()
#def numdt2dtser( self, num ):
# yy = long( num / 10000 )
# mm = long((num - (yy * 10000)) / 100)
# gg = long(num - (yy * 10000 + mm * 100))
# return self.com.DateSerial( yy, mm, gg )
class book (object):
def __init__( self, name=None, xlscom=None ):
if xlscom: self.excel = xlscom
else: self.excel = excel()
if name: self.com = self.excel.com.Workbooks.Open( osp.abspath( name ) )
else:
self.com = self.excel.com.Workbooks.Add()
# lascio un solo foglio
self.excel.com.DisplayAlerts = False
while self.com.Sheets.Count > 1: self.com.Sheets( 1 ).Delete()
self.excel.com.DisplayAlerts = True
def save( self, name=None, sh=None, fmt=None ):
if sh: self.com.Sheets( sh ).Activate()
if name: self.com.SaveAs( osp.abspath( name ), fmt )
else: self.com.Save()
def close( self ): self.com.Close( False )
def foglio( self, name=None ): return sheet( self, name )
def qquit( self ):
self.close()
self.excel.qquit()
class sheet (object):
def __init__( self, book, name=None ):
self.book = book
if name:
try: self.com = book.com.Sheets( name )
except:
self.com = book.com.Sheets.Add()
self.setname( name )
else:
self.com = book.com.Sheets.Add()
def setname( self, name ): self.com.Name = name
def cella( self, r, c ): return cell( self, r, c )
class cell (object):
def __init__( self, sheet, r, c ):
self.sheet = sheet
self.com = sheet.com.Cells( r, c )
def setvalue( self, value=None, fmtnr=None, formula=None ):
self.com.Value = value
if fmtnr: self.com.NumberFormat = fmtnr
if formula: self.com.Formula = formula
def getvalue( self ): return self.com.Value
def date2days( dt ):
td = dt - datetime.date( 1900, 1, 1 )
return td.days
def days2date( days ):
dt = datetime.date( 1900, 1, 1 ) + datetime.timedelta( days )
return dt
if __name__=='__main__':
import sys
if len( sys.argv ) < 3:
print 'usage: %s ifile ofile [foglio]' % sys.argv[0]
sys.exit( 1 )
xls = book( sys.argv[1] )
if len( sys.argv ) > 3: sh = sys.argv[3]
else: sh = None
xls.save( sys.argv[2], sh, 6 )
xls.close()