...
Table |
---|
...
of |
---|
...
Contents | ||||
---|---|---|---|---|
|
Hello World with WordTemplate
WordWriter's
...
WordTemplate
...
approach
...
allows
...
you
...
to
...
write
...
data
...
to
...
a
...
template
...
file
...
that
...
contains
...
merge
...
field.
...
The
...
merge
...
fields
...
tell
...
WordWriter
...
where
...
to
...
bind
...
specific
...
sets
...
of
...
data,
...
similar
...
to
...
Word's
...
...
merge.
...
This
...
tutorial
...
will
...
show
...
you
...
the
...
basics
...
on
...
how
...
to
...
dynamically
...
insert
...
data
...
into
...
a
...
document
...
using
...
WordTemplate
...
by
...
taking
...
custom
...
text
...
from
...
a
...
web
...
form
...
textbox
...
and
...
inserting
...
it
...
into
...
a
...
template
...
file.
...
Setting
...
up
...
the
...
template
...
file
...
Create
...
a
...
new
...
.docx
...
file.
...
Save
...
it
...
as
...
template.docx
...
.
...
Info
...
In
...
the
...
sample
...
code,
...
the
...
completed
...
template
...
file
...
is
...
located
...
in
...
templates/template.docx
...
Go to the Insert tab on the ribbon > Text group > Quick Parts drop-down.
...
Select
...
Field.
In the Field dialog, select Mergefield from the Field names list.
In the Field Properties section, type "Variable" in the Field name box. Click OK.
This will create a merge field <<Variable>> which will correspond to a column in a data set with only one row of data.
The template is now complete. We'll move on to writing the code to bind the data to this merge field.
Writing the Code
Info |
---|
In the sample code, the sample web application page WorldTemplate_HelloWorld.aspx and code behind WordTemplate_HelloWorld.aspx.cs/vb are available in the Hello World project. {info} 1. Include the {{ |
Include the SoftArtisans.OfficeWriter.WordWriter
...
namespace in
...
the
...
code
...
behind.
...
Code Block language c# using SoftArtisans.OfficeWriter.WordWriter;
...
Code Block language vb Imports SoftArtisans.OfficeWriter.WordWriter
...
Instantiate the WordTemplate object.
Code Block language c# WordTemplate WT = new WordTemplate();
...
Code Block language vb Dim WT As WordTemplate = New WordTemplate()
...
Open the template file with WordTemplate.Open
Code Block language c# WT.Open(Page.MapPath("templates\\template.docx"));
...
Code Block language vb WT.Open(Page.MapPath("templates\\template.docx"))
...
In this example, we'll
...
pull
...
a
...
text
...
value
...
from
...
a
...
textbox
...
on
...
a
...
web
...
form
...
that
...
a
...
user
...
submitted.
...
Get
...
the
...
data
...
value
...
from
...
the
...
web
...
form's
...
text
...
box
Code Block language c# string value = DataValueBox.Text.Trim();
...
Code Block language vb Dim value As String = DataValueBox.Text.Trim()
...
Create an object array to hold the textbox value. Create a string array to hold the column name "Variable"
Code Block language c# object[] values = { value }; string[] columnNames = { "Variable" }
...
Code Block language vb Dim values() As Object = {value} Dim columnNames() As String = {"Variable"}
...
...
to
...
bind
...
the
...
data
...
to
...
template
...
file.
...
Code Block language c# WT.SetDataSource(values, columnNames);
...
Code Block language vb WT.SetDataSource(values, columnNames)
...
WordTemplate has three methods to bind data: WordTemplate.SetDataSource
...
,
...
...
,
...
and
...
...
.
...
SetDataSource
...
binds
...
a
...
single
...
row
...
of
...
data
...
to
...
the
...
template,
...
where
...
the
...
merge
...
fields
...
can
...
span
...
the
...
entire
...
document.
...
To
...
bind
...
a
...
single
...
value
...
or
...
group
...
of
...
single
...
values,
...
you
...
need
...
to
...
put
...
those
...
in
...
a
...
data
...
set,
...
such
...
as
...
an
...
array
...
and
...
then
...
bind
...
that
...
array
...
to
...
the
...
template
...
file.
...
...
to
...
bind
...
the
...
data
...
to
...
the
...
template
...
file.
...
Code Block language c# WT.Process();
...
Code Block language vb WT.Process()
...
Save the output with WordTemplate.Save
Code Block language c# WT.Save(Response, "Output.docx", false);
...
Code Block language vb WT.Save(Response, "Output.docx", False)
...
There are several options for WordTemplate.Save
...
including:
...
save
...
to
...
disk,
...
save
...
to
...
memory
...
stream,
...
stream
...
back
...
to
...
the
...
client
...
inline,
...
and
...
stream
...
back
...
to
...
the
...
client
...
as
...
an
...
attachment.
...
In
...
this
...
case,
...
we're
...
streaming
...
the
...
document
...
back
...
to
...
the
...
client
...
as
...
an
...
attachment.
...
Info
...
WordWriter does not convert between file formats, so it is important that the file extension on the output file matches the file extension of the original template file.
...
Run your code.
In the output file you will see that the merge field has been replaced by the value.
Congratulations, you completed Hello World using WordTemplate!
Final Code
Section | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Downloads
You can download the code for the Hello World tutorial as a Visual Studio solution.
...