Advertisement
Guest User

Untitled

a guest
Mar 6th, 2013
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. import win32com.client as w
  2. from win32com.client import constants
  3.  
  4.  
  5. class ex():
  6.     def __init__(self):
  7.         self.excel = w.DispatchEx('Excel.Application')
  8.         self.excel.Visible = True
  9.         self.excel.DisplayAlerts = False
  10.  
  11.     def newBook(self):
  12.         wb = self.excel.Workbooks.Add()
  13.         return wb
  14.  
  15.     def activeBook(self, wb):
  16.         wb.Activate()
  17.         self.wb = wb
  18.  
  19.     def activeSheet(self, ws):
  20.         self.ws = self.wb.Sheets(ws)
  21.  
  22.     def openBook(self, name):
  23.         self.wb = self.excel.Workbooks.Open(name)
  24.         return self.wb
  25.  
  26.     def refresh(self, name, tab=False, com=True):
  27.         try:
  28.             qr = self.ws.QueryTables.Add(r"""TEXT;""" + name + '.txt', self.ws.Range("A1"))
  29.             qr.Name = "ACM"
  30.             qr.TextFileTabDelimiter = tab
  31.             qr.TextFileCommaDelimiter = com
  32.             qr.Refresh()
  33.         except Exception:
  34.             print "Could not open source, make sure it's not being used"
  35.             self.excel.Quit()
  36.  
  37.     def insertSheet(self, sheet_name):
  38.         sheets = self.wb.Sheets.Count
  39.         self.ws = self.excel.Worksheets.Add(After=self.wb.Sheets (sheets))
  40.         self.ws.Name = sheet_name
  41.  
  42.     def saveAs(self, filename):
  43.         self.wb.SaveAs(Filename=filename)
  44.  
  45.     def delete(self, param, criteria):
  46.         critList = criteria.split(';')
  47.         ad = 0
  48.         for i in range(1, self.lastCell()[1]):
  49.             if param in self.ws.Cells(1, i).Value:
  50.                 ad = i
  51.                 break
  52.  
  53.         m = 2
  54.         while m <= (self.ws.UsedRange.Rows.Count):
  55.  
  56.             if self.ws.Cells(m, ad).Value is None:
  57.                 temp = []
  58.  
  59.             else:
  60.                 temp = filter(lambda x: self.ws.Cells(m, ad).Value in x, critList)
  61.  
  62.             if len(temp) > 0:
  63.                 self.excel.Rows("%d:%d" % (m, m)).Select()
  64.                 self.excel.Selection.Delete(Shift=constants.xlUp)
  65.  
  66.             else:
  67.                 m += 1
  68.  
  69.     def move(self, expr, param, sheet):
  70.         ad = 0
  71.         for i in range(1, self.lastCell()[1]):
  72.             if param in self.ws.Cells(1, i).Value:
  73.                 ad = i
  74.                 break
  75.  
  76.         m = 2
  77.         while m <= (self.lastCell()[1]):
  78.             if eval('"' + str(self.ws.Cells(m, ad).Value) + '"' + expr):
  79.                 self.excel.Rows("%d:%d" % (m, m)).Select()
  80.                 self.excel.Selection.Copy()
  81.                 self.wb.Sheets(sheet).Cells(self.lastCell(sheet)[0] + 1, 1).PasteSpecial()
  82.                 self.excel.Rows("%d:%d" % (m, m)).Delete()
  83.  
  84.             else:
  85.                 m += 1
  86.  
  87.     def deleteAll(self, sheet=None):
  88.         if sheet is None:
  89.             self.ws.Range(self.ws.Cells(1, 1), self.ws.Cells(self.lastCell(sheet)[0], self.lastCell(sheet)[1])).Delete()
  90.         else:
  91.             self.wb.Sheets("A1").Delete()
  92.  
  93.  
  94.  
  95.     def lastCell(self, sheet=None):
  96.         if sheet is None:
  97.             used = self.ws.UsedRange
  98.         else:
  99.             used = self.wb.Sheets(sheet).UsedRange
  100.  
  101.         (nrows, ncols) = (used.Row + used.Rows.Count - 1, used.Column + used.Columns.Count - 1)
  102.         return (nrows, ncols)
  103.  
  104.     def Quit(self):
  105.         self.excel.Quit()
  106.  
  107. if __name__ == '__main__':
  108.     e = ex()
  109.     wb1 = e.newBook()
  110.     e.activeBook(wb1)
  111.     e.activeSheet('Sheet1')
  112.     e.refresh(r'//cpsrv/cp/forms/ACM', com=True)
  113.  
  114.     tmp = []
  115.  
  116.     e.delete('dbstcode','PS;W')
  117.  
  118.     e.move('=="C"', "dbstcode", 'Sheet2')
  119.  
  120.     e.deleteAll()
  121.  
  122.     # for i in range(1, e.lastCell()[0]):
  123.     #     tmp.append(e.ws.Cells(i, 1).Value)
  124.  
  125.     # e.wb.Close(SaveChanges=0)
  126.  
  127.     # e.activeBook(wb2)
  128.     # e.activeSheet('AAA')
  129.  
  130.     # for i in range(1, e.lastCell()[0]):
  131.     #     e.ws.Cells(i, 1).Value = None
  132.  
  133.     # for i in range(1, len(tmp)):
  134.     #     e.ws.Cells(i, 1).Value = tmp[i]
  135.  
  136.     # e.wb.Close(SaveChanges=1)
  137.  
  138.     # e.Quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement