Python XlsxWriter - Write to many sheets - python-2.7

This writes to the first sheet but all other sheets are blank.
for date in dates:
sheet = wb.add_worksheet(date)
sheet.write(row, 0, 'example')
For each date I want to creat a sheet with the name equal to the date and then write to each sheet. The sheets are created with the correct names but there is nothing in them except for the first sheet.

I supposed that your variable wb is the workbook and is initialized before.
In the instruction
sheet.write(row, 0, 'example')
I don't know how row is enhanced.
So i created a little script:
import xlsxwriter
list_name = ["first sheet", "second sheet", "third sheet"]
workbook = xlsxwriter.Workbook(<Your full path>)
for sheet_name in list_name:
worksheet = workbook.add_worksheet(sheet_name)
worksheet.write('A1', sheet_name)
workbook.close()
Regards

This is the code snippet which is working fine for me.you can replace the normal integers in the list with the dates.It is creating multiple sheets and writing into all sheets also.
import xlwt
List=[1,2,3,4]
book = xlwt.Workbook(encoding = "utf-8")
for i in List:
sheet1=book.add_sheet(str(i))
sheet1.write(0,0,"Example")
book.save("Test_Status.xls")

Related

Django Import Export, how to import specific sheet in excel?

What is the correct way to import specific sheet of excel by using Django-Import-Export Module??
or if possible. all the sheets in a workbook one by one...
I referred their documentation and it was not much helpful
https://django-import-export.readthedocs.io/en/latest/
the same way I would like to export data into one workbook from multiple sheets...
how do achieve it??
Here is the complete answer for my question
databook = Databook()
imported_data= databook.load(file.read( ), format= 'xlsx')
for dataset in imported_data.sheets():
print(dataset.title) # returns the names of the sheets
print(dataset) # returns the data in each sheet
This is how you can export your multiple datasets in one excel file
book = tablib.Databook((data1, data2, data3))
with open('students.xls', 'wb') as f:
f.write(book.export('xls'))
documentation
You can also try using use pyexcel_xls package on django it's fairly easy to use.
from pyexcel_xls import get_data as xls_get
def import_excel(request):
excel_file = request.FILES['file']
#uploading the excel file
if (str(excel_file).split('.')[-1] == "xls"):
data = xls_get(excel_file, column_limit=15)
elif (str(excel_file).split('.')[-1] == "xlsx"):
data = xlsx_get(excel_file, column_limit=15)
if (len(data['sheet1']) > 2): #reading of records begins from second row
name = data['sheet1'] #excel sheet name you wish to get
for l in range(2, len(name)): #loop through the number of rows in the sheet
data = name[l][0] #extract the first column's data

How to create a pygsheets worksheet without the default sheet1?

Is there a way to create a pygsheets worksheet without the default sheet1?
Looking through the documentation didn't help, but googling seems to indicate that it's possible to eliminate sheet1 in excel, so presumably, it should be possible in pygsheets.
sheet1 just refers to the first sheet which is automatically created when you creates the spreadsheet. It is automatically created by google sheets and you can't control it from any library. google sheets required you to have at-least one worksheet in a spreadsheet. So you cannot remove all the sheets.
But if you just want to remove the sheet named sheet1, you can do
sh.del_worksheet(sh.sheet1)
or if you wanna rename it , you can do
sh.sheet1.title="new_sheet"
Simply rename the default sheet1 to your desired worksheet name (my_sheet1)
sh = gc.create("my_google_sheet", parent_id="56uyjJcWghbtyuwA")
wks = sh.sheet1
# rename to your desired worksheet name
wks.title = ('my_sheet1')

Enter datas in excel using python

I need to enter data's in a particular column in excel using python.
I am new to python and i am eager to involve with this scripting.
I expect the script that ask for a dialog to enter the data and the given data should import in the excel in the particular column.Can anyone help me?
You shall use openpyxl to manipulate excel.
Example:
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Sheet Name"
ws['B2'] = "Test Data 1"
# or
d = ws.cell(row=1, column=2, value="Test Data 2")
wb.save('D:\\Prabhakar\\Sample\\balances.xlsx')
Ref: Openpyxl

Deleting Entire blank row in an existing Excel Sheet using Python

How to remove the entire blank row from the existing Excel Sheet using Python?
I need a solution which DOES NOT :
Include reading the whole file and rewriting it without the deleted row.
IS THERE ANY DIRECT SOLUTION?
I achieved using Pandas package....
import pandas as pd
#Read from Excel
xl= pd.ExcelFile("test.xls")
#Parsing Excel Sheet to DataFrame
dfs = xl.parse(xl.sheet_names[0])
#Update DataFrame as per requirement
#(Here Removing the row from DataFrame having blank value in "Name" column)
dfs = dfs[dfs['Name'] != '']
#Updating the excel sheet with the updated DataFrame
dfs.to_excel("test.xls",sheet_name='Sheet1',index=False)
If using memory is not an issue you can achieve this using an extra dataframe.
import pandas as pd
#Read from Excel
xl= pd.ExcelFile("test.xls")
dfs = xl.parse(xl.sheet_names[0])
df1 = dfs[dfs['Sal'] == 1000]
df1 = df1[df1['Message']=="abc"]
ph_no = df1['Number']
print df1
To delete an Excel row, say row 5, column does not matter so 1:
sh.Cells(5,1).EntireRow.Delete()
To delete a range of Excel rows, say row 5 to 20
sh.Range(sh.Cells(5,1),sh.Cells(20,1)).EntireRow.Delete()

Loop through csv with Pandas, specific column

With the csv module, I loop through the rows to execute logic:
import csv
with open("file.csv", "r") as csv_read:
r = csv.reader(csv_read, delimiter = ",")
next(r, None) #Skip headers first row
for row in rows:
#Logic here
I'm new to Pandas, and I want to execute the same logic, using the second column only in the csv as the input for the loop.
import pandas as pd
pd.read_csv("file.csv", usecols=[1])
Assuming the above is correct, what should I do from here to execute the logic based on the cells in column 2?
I want to use the cell values in column 2 as input for a web crawler. It takes each result and inputs it as a search term on a webpage, and then scrapes data from that webpage. Is there any way to grab each cell value in the array rather than the whole array at the same time?
Basically the pandas equivalent of your code is this:
import pandas as pd
df = pd.read_csv("file.csv", usecols=[1])
So passing usecols=[1] will only load the second column, see the docs.
now assuming this column has a name like 'url' but really it doesn't matter we can do something like:
def crawl(x):
#do something
df.apply(crawl)
So in principle the above will crawl each url in your column a value at a time.
EDIT
You can pass param axis=1 to apply so that it process each row rather than the entire column:
df.apply(crawl, axis=1)