win32com Trying to open a xlmb file with macros - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: win32com Trying to open a xlmb file with macros (/thread-15354.html) |
win32com Trying to open a xlmb file with macros - diegoctn - Jan-14-2019 Hi guys, I am trying to read data from a xlsb file using the code below import win32com.client excel = win32com.client.Dispatch("Excel.Application") excel.DisplayAlerts = False excel.Visible=False #doc1 = excel.Workbooks.Open. doc = excel.Workbooks.Open("O:\xxx\xxx\xxx.xlsb") doc.SaveAs(Filename="O:\\xxx\\xxx\\xxx.csv",FileFormat=6) doc.Close() excel.Quit()The problem is that it does appear a mask with Is there any way just to read the data in Excel without the need to run any macro?Thanks RE: win32com Trying to open a xlmb file with macros - snippsat - Jan-14-2019 Use code tag,i have added in your post. win32com is now very little used for excel connection,now is XLSB a binary Microsoft Excel format. There is a library for this pyxlsb that read XLSB. Then can also read into pandas,for greater power if need edit. Common Excel Tasks Demonstrated in Pandas import pandas as pd from pyxlsb import open_workbook as open_xlsb df = [] with open_xlsb('some.xlsb') as wb: with wb.get_sheet(1) as sheet: for row in sheet.rows(): df.append([item.v for item in row]) df = pd.DataFrame(df[1:], columns=df[0]) RE: win32com Trying to open a xlmb file with macros - diegoctn - Jan-14-2019 Thanks a lot snippsat,I am an absolute beginner, only working in Python in a week. However, I changed the file to xlsm and now I am using xlrd import xlrd file_location='O:\xxx\xxxx\xxx Python.xlsm' workbook = xlrd.open_workbook(file_location) sheet = workbook.sheet_by_index(1) sheet.cell_value(0,0) sheet.nrows sheet.ncols for col in range(sheet.ncols): print (sheet.cell_value(3, col)) It's reading the data without triggering the macro, but now I need to write the data to a csv file and struggling to understand how using the for. Is there a way to give a range to set a loop in print (sheet.cell_value(3, col)) and to use a variable instead of print? Many Thanks RE: win32com Trying to open a xlmb file with macros - diegoctn - Jan-16-2019 Hi guys, I am now using the code below: import xlrd file_location='O:\xxx\xxxxxx\xxx.xlsm' workbook = xlrd.open_workbook(file_location) #sheet = workbook.sheet_by_index(2) xl_sheet =workbook.sheet_by_name("B Data") for rownum in range(xl_sheet.nrows): print (xl_sheet.row_values(rownum)) It reads the data from an Excel file which uses a third part add in that update the data. The point is that I only see the original data but not the updated. Let's say that the Cell 1 Col A has 20 as value, this is what Python shows me. Now, if I see the file on the machine with the plug in installed the value is 22 but the code in Python still shows me 20. Any idea how can I set a process to see the data when it is changed and not only the original one? Thanks |