Working with Excel Spreadsheets
287
>>> sheet = wb.get_active_sheet()
>>> sheet.merge_cells('A1:D3')
>>> sheet['A1'] = 'Twelve cells merged together.'
>>> sheet.merge_cells('C5:D5')
>>> sheet['C5'] = 'Two merged cells.'
>>> wb.save('merged.xlsx')
The argument to 
merge_cells()
is a single string of the top-left and 
bottom-right cells of the rectangular area to be merged: 
'A1:D3'
merges 
12 cells into a single cell. To set the value of these merged cells, simply set 
the value of the top-left cell of the merged group. 
When you run this code, merged.xlsx will look like Figure 12-7.
Figure 12-7: Merged cells in a spreadsheet
To unmerge cells, call the 
unmerge_cells()
sheet method. Enter this into 
the interactive shell.
>>> import openpyxl
>>> wb = openpyxl.load_workbook('merged.xlsx')
>>> sheet = wb.get_active_sheet()
>>> sheet.unmerge_cells('A1:D3')
>>> sheet.unmerge_cells('C5:D5')
>>> wb.save('merged.xlsx')
If you save your changes and then take a look at the spreadsheet, you’ll 
see that the merged cells have gone back to being individual cells.
Freeze Panes
For spreadsheets too large to be displayed all at once, it’s helpful to “freeze” 
a few of the top rows or leftmost columns onscreen. Frozen column or 
row headers, for example, are always visible to the user even as they scroll 
through the spreadsheet. These are known as freeze panes. In OpenPyXL, 
each 
Worksheet
object has a 
freeze_panes
attribute that can be set to a 
Cell
object or a string of a cell’s coordinates. Note that all rows above and all 
columns to the left of this cell will be frozen, but the row and column of the 
cell itself will not be frozen.
To unfreeze all panes, set 
freeze_panes
to 
None
or 
'A1'
. Table 12-3 
shows which rows and columns will be frozen for some example settings 
of 
freeze_panes
.
Pdf create fillable form - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
adding text field to pdf; build pdf forms
Pdf create fillable form - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
chrome pdf save form data; pdf form creation
288   
Chapter 12
table 12-3: Frozen Pane Examples
freeze_panes setting
rows and columns frozen
sheet.freeze_panes = 'A2'
Row 1
sheet.freeze_panes = 'B1'
Column A
sheet.freeze_panes = 'C1'
Columns A and B
sheet.freeze_panes = 'C2'
Row 1 and columns A and B
sheet.freeze_panes = 'A1' or  
sheet.freeze_panes = None
No frozen panes
Make sure you have the produce sales spreadsheet from http://nostarch 
.com/automatestuff/. Then enter the following into the interactive shell:
>>> import openpyxl
>>> wb = openpyxl.load_workbook('produceSales.xlsx')
>>> sheet = wb.get_active_sheet()
>>> sheet.freeze_panes = 'A2'
>>> wb.save('freezeExample.xlsx')
If you set the 
freeze_panes
attribute to 
'A2'
, row 1 will always be view-
able, no matter where the user scrolls in the spreadsheet. You can see this 
in Figure 12-8.
Figure 12-8: With freeze_panes set to 'A2', row 1 is always visible even as the user 
scrolls down.
charts
OpenPyXL supports creating bar, line, scatter, and pie charts using the 
data in a sheet’s cells. To make a chart, you need to do the following:
1.  Create a 
Reference
object from a rectangular selection of cells.
2.  Create a 
Series
object by passing in the 
Reference
object.
3.  Create a 
Chart
object.
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Convert multiple pages PowerPoint to fillable and editable PDF documents. Easy to create searchable and scanned PDF files from PowerPoint.
add fields to pdf form; add print button to pdf form
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Create PDF files from both DOC and DOCX formats. Convert multiple pages Word to fillable and editable
create a form in pdf from word; create a pdf form to fill out
Working with Excel Spreadsheets
289
4.  Append the 
Series
object to the 
Chart
object.
5.  Optionally, set the 
drawing.top
drawing.left
drawing.width
, and  
drawing.height
variables of the 
Chart
object.
6.  Add the 
Chart
object to the 
Worksheet
object.
The 
Reference
object requires some explaining. 
Reference
objects are 
created by calling the 
openpyxl.charts.Reference()
function and passing 
three arguments:
1.  The 
Worksheet
object containing your chart data.
2.  A tuple of two integers, representing the top-left cell of the rectangular 
selection of cells containing your chart data: The first integer in the 
tuple is the row, and the second is the column. Note that 
1
is the first 
row, not 
0
.
3.  A tuple of two integers, representing the bottom-right cell of the rectan-
gular selection of cells containing your chart data: The first integer in 
the tuple is the row, and the second is the column.
Figure 12-9 shows some sample coordinate arguments.
Figure 12-9: From left to right: (1, 1), (10, 1)(3, 2), (6, 4); (5, 3), (5, 3)
Enter this interactive shell example to create a bar chart and add it to 
the spreadsheet:
>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb.get_active_sheet()
>>> for i in range(1, 11):          # create some data in column A
sheet['A' + str(i)] = i
>>> refObj = openpyxl.charts.Reference(sheet, (1, 1), (10, 1))
>>> seriesObj = openpyxl.charts.Series(refObj, title='First series')
>>> chartObj = openpyxl.charts.BarChart()
>>> chartObj.append(seriesObj)
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. Create fillable and editable PDF documents from Excel in Visual
best way to create pdf forms; adding text fields to pdf acrobat
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create fillable and editable PDF documents from Excel in both .NET WinForms and ASP.NET. Create searchable and scanned PDF files from Excel.
pdf save form data; can save pdf form data
290   
Chapter 12
>>> chartObj.drawing.top = 50       # set the position
>>> chartObj.drawing.left = 100
>>> chartObj.drawing.width = 300    # set the size
>>> chartObj.drawing.height = 200
>>> sheet.add_chart(chartObj)
>>> wb.save('sampleChart.xlsx')
This produces a spreadsheet that looks like Figure 12-10.
50 pixels
100 pixels
300 pixels wide
200 pixels
high
Figure 12-10: A spreadsheet with a chart added
We’ve created a bar chart by calling 
openpyxl.charts.BarChart()
. You 
can also create line charts, scatter charts, and pie charts by calling  
openpyxl 
.charts.LineChart()
openpyxl.charts.ScatterChart()
, and 
openpyxl.charts 
.PieChart()
.
Unfortunately, in the current version of OpenPyXL (2.1.4), the 
load_ 
workbook()
function does not load charts in Excel files. Even if the Excel file 
has charts, the loaded 
Workbook
object will not include them. If you load a 
Workbook
object and immediately save it to the same .xlsx  filename, you will 
effectively remove the charts from it.
Summary
Often the hard part of processing information isn’t the processing itself but 
simply getting the data in the right format for your program. But once you 
have your spreadsheet loaded into Python, you can extract and manipulate 
its data much faster than you could by hand.
You can also generate spreadsheets as output from your programs. So 
if colleagues need your text file or PDF of thousands of sales contacts trans-
ferred to a spreadsheet file, you won’t have to tediously copy and paste it all 
into Excel.
Equipped with the 
openpyxl
module and some programming knowl-
edge, you’ll find processing even the biggest spreadsheets a piece of cake.
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. Easy to create searchable and scanned PDF files from PowerPoint.
convert pdf to editable form; change font on pdf form
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Convert multiple pages Word to fillable and editable PDF documents in both .NET WinForms and ASP.NET. Easy to create searchable and scanned PDF files from
best program to create pdf forms; convert word document to editable pdf form
Working with Excel Spreadsheets
291
Practice Questions
For the following questions, imagine you have a 
Workbook
object in the vari-
able 
wb
, a 
Worksheet
object in 
sheet
, a 
Cell
object in 
cell
, a 
Comment
object in 
comm
, and an 
Image
object in 
img
.
1.  What does the 
openpyxl.load_workbook()
function return?
2.  What does the 
get_sheet_names()
workbook method return?
3.  How would you retrieve the 
Worksheet
object for a sheet named 
'Sheet1'
?
4.  How would you retrieve the 
Worksheet
object for the workbook’s active 
sheet?
5.  How would you retrieve the value in the cell C5?
6.  How would you set the value in the cell C5 to 
"Hello"
?
7.  How would you retrieve the cell’s row and column as integers?
8.  What do the 
get_highest_column()
and 
get_highest_row()
sheet methods 
return, and what is the data type of these return values?
9.  If you needed to get the integer index for column 
'M'
, what function 
would you need to call?
10.  If you needed to get the string name for column 
14
, what function 
would you need to call?
11.  How can you retrieve a tuple of all the 
Cell
objects from A1 to F1?
12.  How would you save the workbook to the filename example.xlsx?
13.  How do you set a formula in a cell?
14.  If you want to retrieve the result of a cell’s formula instead of the cell’s 
formula itself, what must you do first?
15.  How would you set the height of row 5 to 100?
16.  How would you hide column C?
17.  Name a few features that OpenPyXL 2.1.4 does not load from a spread-
sheet file.
18.  What is a freeze pane? 
19.  What five functions and methods do you have to call to create a bar 
chart?
Practice Projects
For practice, write programs that perform the following tasks.
Multiplication Table Maker
Create a program multiplicationTable.py that takes a number N from the com-
mand line and creates an N×N multiplication table in an Excel spreadsheet. 
For example, when the program is run like this:
py multiplicationTable.py 6
C# Create PDF Library SDK to convert PDF from other file formats
Create fillable PDF document with fields. Load PDF from existing documents and image in SQL server. Load PDF from stream programmatically.
change pdf to fillable form; add text fields to pdf
VB.NET Create PDF Library SDK to convert PDF from other file
Create fillable PDF document with fields in Visual Basic .NET application. Load PDF from existing documents and image in SQL server.
create a fillable pdf form from a pdf; create a pdf form
292   
Chapter 12
. . . it should create a spreadsheet that looks like Figure 12-11.
Figure 12-11: A multiplication table generated in a spreadsheet
Row 1 and column A should be used for labels and should be in bold. 
Blank Row Inserter
Create a program blankRowInserter.py that takes two integers and a filename 
string as command line arguments. Let’s call the first integer N and the sec-
ond integer M. Starting at row N, the program should insert M blank rows 
into the spreadsheet. For example, when the program is run like this:
python blankRowInserter.py 3 2 myProduce.xlsx
. . . the “before” and “after” spreadsheets should look like Figure 12-12.
Figure 12-12: Before (left) and after (right) the two blank rows are inserted at row 3
You can write this program by reading in the contents of the spread-
sheet. Then, when writing out the new spreadsheet, use a 
for
loop to copy 
the first N lines. For the remaining lines, add M to the row number in the 
output spreadsheet.
Spreadsheet Cell Inverter
Write a program to invert the row and column of the cells in the spread-
sheet. For example, the value at row 5, column 3 will be at row 3, column 5 
(and vice versa). This should be done for all cells in the spreadsheet. For 
example, the “before” and “after” spreadsheets would look something like 
Figure 12-13.
VB.NET Create PDF from OpenOffice to convert odt, odp files to PDF
Create PDF document from OpenOffice Text Document with embedded Export PDF document from OpenOffice Presentation. ODT, ODS, ODP forms into fillable PDF formats.
adding form fields to pdf files; add picture to pdf form
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
Create PDF document from OpenOffice Presentation in both .NET WinForms and ASP.NET NET control to change ODT, ODS, ODP forms to fillable PDF formats in Visual
change font in pdf form field; add text field to pdf
Working with Excel Spreadsheets
293
Figure 12-13: The spreadsheet before (top) and after (bottom) inversion
You can write this program by using nested 
for
loops to read in the 
spreadsheet’s data into a list of lists data structure. This data structure 
could have 
sheetData[x][y]
for the cell at column 
x
and row 
y
. Then, when 
writing out the new spreadsheet, use 
sheetData[y][x]
for the cell at column 
x
and row 
y
.
Text Files to Spreadsheet
Write a program to read in the contents of several text files (you can make 
the text files yourself) and insert those contents into a spreadsheet, with 
one line of text per row. The lines of the first text file will be in the cells of 
column A, the lines of the second text file will be in the cells of column B, 
and so on.
Use the 
readlines()
File
object method to return a list of strings, one 
string per line in the file. For the first file, output the first line to column 1, 
row 1. The second line should be written to column 1, row 2, and so on. The 
next file that is read with 
readlines()
will be written to column 2, the next 
file to column 3, and so on.
Spreadsheet to Text Files
Write a program that performs the tasks of the previous program in reverse 
order: The program should open a spreadsheet and write the cells of col-
umn A into one text file, the cells of column B into another text file, and 
so on.
13
wo r k i n g   w i t h   P D f   
An D   w o r D   D o C u m e n t S
PDF and Word documents are binary files, 
which makes them much more complex 
than plaintext files. In addition to text, they 
store lots of font, color, and layout informa-
tion. If you want your programs to read or write to 
PDFs or Word documents, you’ll need to do more 
than simply pass their filenames to 
open()
.
Fortunately, there are Python modules that make it easy for you to 
interact with PDFs and Word documents. This chapter will cover two such 
modules: PyPDF2 and Python-Docx.
Pdf documents
PDF stands for Portable Document Format and uses the .pdf file extension. 
Although PDFs support many features, this chapter will focus on the two 
things you’ll be doing most often with them: reading text content from 
PDFs and crafting new PDFs from existing documents.
296   
Chapter 13
The module you’ll use to work with PDFs is PyPDF2. To install it, run 
pip install PyPDF2
from the command line. This module name is case sen-
sitive, so make sure the y is lowercase and everything else is uppercase. 
(Check out Appendix A for full details about installing third-party mod-
ules.) If the module was installed correctly, running 
import PyPDF2
in the 
interactive shell shouldn’t display any errors.
Extracting Text from PDFs
PyPDF2 does not have a way to extract images, charts, or other media from 
PDF documents, but it can extract text and return it as a Python string. To 
start learning how PyPDF2 works, we’ll use it on the example PDF shown 
in Figure 13-1.
Figure 13-1: The PDF page that we will be  
extracting text from
the ProBle mAtiC PDf formAt
While PDF files are great for laying out text in a way that’s easy for people to 
print and read, they’re not straightforward for software to parse into plaintext‮ 
As such, PyPDF2 might make mistakes when extracting text from a PDF and 
may even be unable to open some PDFs at all‮ There isn’t much you can do 
about this, unfortunately‮ PyPDF2 may simply be unable to work with some of 
your particular PDF files‮ That said, I haven’t found any PDF files so far that 
can’t be opened with PyPDF2‮
Documents you may be interested
Documents you may be interested