Program.cs
// This example uses Word Automation to create a document, add some text, add a table,
// fill it with random data and generate barcode images for it.
using System;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;
using Word = Microsoft.Office.Interop.Word;
using Bytescout.BarCode;
namespace GenerateWordDocumentWithBarcodes
{
class Program
{
static void Main(string[] args)
{
object optional = Missing.Value;
object endOfDocBookmark = “\\endofdoc”; /* \endofdoc is a predefined bookmark */
// start Word
_Application word = new Application();
word.Visible = false;
// create new document
_Document document = word.Documents.Add(ref optional, ref optional, ref optional, ref optional);
// insert a paragraph at the beginning of the document
Paragraph paragraph1 = document.Content.Paragraphs.Add(ref optional);
paragraph1.Range.Text = “Heading 1”;
paragraph1.Range.Font.Bold = 1;
paragraph1.Format.SpaceAfter = 24; // 24 pt spacing after paragraph
paragraph1.Range.InsertParagraphAfter();
// insert another paragraph
object range = document.Bookmarks.get_Item(ref endOfDocBookmark).Range;
Paragraph paragraph2 = document.Content.Paragraphs.Add(ref range);
paragraph2.Range.Text = “This is a sentence of normal text. Now here is a table:”;
paragraph2.Range.Font.Bold = 0;
paragraph2.Format.SpaceAfter = 24;
paragraph2.Range.InsertParagraphAfter();
// insert a 5 x 2 table, make the first header row bold and italic
range = document.Bookmarks.get_Item(ref endOfDocBookmark).Range;
Table table = document.Tables.Add((Range) range, 5, 2, ref optional, ref optional);
table.Cell(1, 1).Range.Text = “Value”; // 1st column header
table.Cell(1, 2).Range.Text = “Barcode”; // 2nd column header
table.Rows[1].Range.Font.Bold = 1;
table.Rows[1].Range.Font.Italic = 1;
AddBorders(table.Cell(1, 1).Range);
AddBorders(table.Cell(1, 2).Range);
Random random = new Random();
string tempImage = Path.Combine(Path.GetTempPath(), “tempImage.png”);
// create barcode object
Barcode barcode = new Barcode(“demo”, “demo”);
barcode.Symbology = SymbologyType.Code128;
barcode.DrawCaption = false;
// fill the table with random data and add barcode images
for (int row = 2; row <= 5; row++)
{
string randomValue = random.Next().ToString(CultureInfo.InvariantCulture);
Range cell = table.Cell(row, 1).Range;
cell.Text = randomValue;
AddBorders(cell);
// generate barcode and save it to temporary image file
barcode.Value = randomValue;
barcode.SaveImage(tempImage);
// put barcode image to second column
cell = table.Cell(row, 2).Range;
cell.InlineShapes.AddPicture(tempImage, ref optional, ref optional, ref optional);
AddBorders(cell);
}
// save document
object fileName = @"sample.doc"; // use full file path in your app
document.SaveAs(ref fileName, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional, ref optional);
// quit Word
object saveChanges = true;
word.Quit(ref saveChanges, ref optional, ref optional);
System.Diagnostics.Process.Start((string) fileName);
}
// Adds borders to provided Range
static void AddBorders(Range cell)
{
cell.Borders[WdBorderType.wdBorderLeft].LineStyle = WdLineStyle.wdLineStyleSingle;
cell.Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
cell.Borders[WdBorderType.wdBorderRight].LineStyle = WdLineStyle.wdLineStyleSingle;
cell.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
}
}
}
[/csharp]
Click here to get your Free Trial version of the SDK
also available as: