open excel file on sheet1 after changes with xlwings - python

I need an Excel workbook to open on sheet1 or by that sheets name. I'm using xlwings to alter a workbook with several sheets. Everything works fine but when the file is opened in Excel it opens on the last sheet that has been altered. I can't seem to find an answer. Please help. Thanks

This is what might help you
# load Workbook
workbook= xw.Book('path_file')
#acivate sheet by name
sheet = workbook.sheets.activate('Sheet_Name')
if that doesn't work try
sheet = workbook.sheets["Sheet_Name"]

Related

How to import already existing sheet from another excel file into mine?

I have problem - I created an excel file through xlsxwriter library but now I have one porblem. How to import to this file sheet from another excel file?
Here is piece of code:
SHEET_NAME = 'Foreign_holders'
workbook = xlsxwriter.Workbook('Holdres.xlsx')
def create_sheet(workbook):
worksheet = workbook.add_worksheet(name=SHEET_NAME)
The problem is that I need to import all info from the sheet with all data and formulas from another excel file, which name, for example 'Holdres2.xlsx'. Because when I just copy it and paste on Holdres.xlsx - it just removed copied sheet and replaced with empty after I run the code.

Getting sheet names from a large Excel file

I am using Python 3.7 and using OpenPyxl to read the sheet names from a large excel workbook (29MB) with 10 tabs.
import openpyxl
from openpyxl import load_workbook
wb = load_workbook(filename='h:\\Master_Portfoliio.xlsx')
print(wb.sheetnames)
The code above works for smaller files but when I use the same code for this file, the code just hangs. I would like to read the sheet names and then remove a tab and then copy a tab from another excel workbook into this workbook.
Have you tried the read_only = True flag?
wb = load_workbook(filename='h:\\Master_Portfoliio.xlsx', read_only = True)

How to save excel workbook in normal mode with openpyxl?

I am opening an Excel with openpyxl library, however it is saving the Excel in read - only mode
I tried the answer of this question:
Openpyxl does not close Excel workbook in read only mode
wb._archive.close()
but it give me AttributeError: 'Workbook' object has no attribute '_archive'.
I am working with the following code:
wb = openpyxl.Workbook()
sheet1 = wb.create_sheet("mysheet", 0)
sheet1 = wb["mysheet"]
sheet1.cell(row=1, column=1).value = '123'
sheet1.cell(row=1, column=2).value = 'summary'
wb.save(filename) /*filename has the adress of xlsx*/
The Excel file is created without problem, however it is in 'read only' mode. How can I prevent this? Is there an option for the save or create method to avoid read only mode?
Thanks for your help.
I suspect the problem is simply one of file permissions in Windows. Read-only mode in openpyxl have nothing to do with this and is not relevant here. Check the permissions and ownership of the file you've created and that it is not opened by any other program or process.

Creating workbook and worksheet using openpyxl

I am trying to load an existing Excel file and create a new sheet inside that workbook, but my code is not working using openpyxl.
rb = load_workbook("C:\Raw_Dump.xlsx")
rb.create_sheet("Sheet2")
sheet1 = rb.worksheets[0]
Any help would be appreciated.
You have to save the workbook to the same filename:
rb.save(r"C:\Raw_Dump.xlsx")
full working example:
import openpyxl
ws_name = r"Raw_Dump.xlsx"
rb = openpyxl.load_workbook(ws_name)
rb.create_sheet("Sheet2")
rb.save(ws_name)
I spent a long time searching this and found the best way is to do sheet removal. The code below worked for me:
for sheet in wb.sheetnames:
if sheet not in "MY_SHEET_I_WANNA_KEEP":
rm_sheet = wb[sheet];
wb.remove_sheet(rm_sheet)
wb.save("JustOneSheet.xlsx")

How to iterate over worksheets in workbook, openpyxl

I've been using the openpyxl module to do some processing on some .xlsx files. I've been trying to figure out how to iterate over sheets in a workbook. I'm not sure if I can get it figured out. I've tried the 2 codes below which both return empty results. My .xlsx file has about 20 sheets, so something should return.
The one thing I couldn't find on the internet, is how to set a workbook to an actual workbook. Usually I am writing to a workbook, so I just initialize it by setting a variable to en empty workbook workbook = Workbook() but in this case, I am unsure if I can open a workbook by doing workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
If anyone can identify what it is I am doing wrong, I would appreciate it.
Here is my code:
workbook = Workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
for sheet in workbook.worksheets:
print sheet
# or
for sheet in workbook.worksheets:
print sheet.title
Open the workbook via load_workbook() and iterate over worksheets:
from openpyxl import load_workbook
wb = load_workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
for sheet in wb.worksheets:
print(sheet)
Here's one if you need active worksheets for your code
for sheet in wb:
ws = wb[sheet]
print('Now in sheet: ' + ws.title)
To print titles of all sheets in a workbook:
from openpyxl import load_workbook
wb = load_workbook(r"C:\Excel\LOOKUP_TABLES_edited.xlsx")
print(wb.sheetnames)
I struggled a bit with the whole "workbook.active" and didn't know how to get around it so I tried a little bit of everything and here is what worked well for me!
for sheet in workbook.sheetnames[2:len(workbook.sheetnames)]:
ws = workbook[value]
for val in ws.iter_rows(min_row=11, max_row=21, min_col=2, max_col=10, values_only=True):
print(str(sheet) + " " + str(val))
This will print the sheet name starting with the third sheet, since that's what I needed, as well as all the cell values referenced. The only other thing is this prints a list and if you want to iterate through each value and pull out "0s" or "None" values, then you'll need another loop. Hope this helps whoever else is looking!

Categories