Spire.Doc is a professional Word .NET library specifically designed for developers to create, read, write, convert and print Word document files. Get free and professional technical support for Spire.Doc for .NET, Java, Android, C++, Python.
Wed Aug 31, 2011 9:37 am
Hi,
I am stuck with following code. What I am trying to do....
1.I am loading 14pages of qutation template file from
Document document = new Document();
document.LoadFromFile(@"..\Template_structure\Full.doc");
2. some where middle of the page example page number 6. I need to check how many master products they got in the quote builder and add to the word document accordingly.
3. Master products assosiate with sub products .
Ex:
Masterproducts - 1
subproducts -1
subproducts -2
subproducts -3
subproducts -4
page - 6
Masterproducts - 2
subproducts -1
subproducts -2
subproducts -3
subproducts -4
Page 7
may be this will go to pages 6 to 11....etc depends on how many master products they have on the qutaion builder. There are no changes on the other pages on the template.
please find the following code :
Document document = new Document();
document.LoadFromFile(@"\..\Full_template.doc");
BookmarksNavigator nav = new BookmarksNavigator(document);
IPartbuilder ptb = new Partbuilder();
IQuoteBuilder qtb = new QuoteBuilder();
bool checkmasterproduct = qtb.checkanymasterproductexist(quoteid);
if (checkmasterproduct == true)
{
ArrayList arr = new ArrayList();
arr = qtb.getallmasterproductitems(quoteid);
foreach (object I in arr)
{
int productcode = (int)I;
qtb.Getmasterproductname(productcode);
nav.MoveToBookmark("playsimbolimages");
Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();
paragraph.AppendText(""+ I +"-" + ptb.ProductDescription + "" );
paragraph.ApplyStyle(BuiltinStyle.Heading2);
section.AddParagraph();
paragraph = section.AddParagraph();
paragraph.AppendText(""+ ptb.ProductLongDescription +"");
section = document.AddSection();
section.BreakCode = SectionBreakType.NewPage;
ArrayList arr2 = new ArrayList();
arr2=qtb.GetallProductsformasterproducts(productcode,quoteid);
foreach (object S in arr2)
{
Partbuilder B = (Partbuilder)S;
// ITextRange t4 = nav.InsertText(""+ B.ProductDescription +"<br/>");
}
}
}
document.SaveToFile("Full_Quote-QTE-" + qid + ".doc", FileFormat.Docx,Response,HttpContentType.Attachment);
}
}
Please advice me soon as possible.
Thank you in advance.
-
ahamed
-
- Posts: 15
- Joined: Mon Aug 15, 2011 1:09 pm
Thu Sep 01, 2011 7:03 am
Hi,
Thanks for your inquiry.
You could create a new paragraph and append a PageBreak separator to the new paragraph.
Please try:
- Code: Select all
nav.MoveToBookmark("playsimbolimages", false, true);
Paragraph newParagraph = new Paragraph(nav.Document);
nav.InsertParagraph(newParagraph);
Body body = newParagraph.OwnerTextBody;
newParagraph.AppendBreak(BreakType.PageBreak);
...
foreach (object S in arr2)
{
if(newParagraph == null)
{
newParagraph = body.AddParagraph();
}
Partbuilder B = (Partbuilder)S;
ITextRange t4 = newParagraph.AppendText(""+ B.ProductDescription);
newParagraph = null;
}
Harry
Technical Support / Developer,
e-iceblue Support Team
-
harry.support
-
- Posts: 180
- Joined: Mon Nov 08, 2010 3:11 pm
Thu Sep 01, 2011 4:19 pm
Hi Harry,
Thank you very much for the answer I have managed to do some of the work unfatunatly still I am having some trouble. Please look at the code below
if (checkmasterproduct == true)
{
ArrayList arr = new ArrayList();
arr = qtb.getallmasterproductitems(quoteid);
foreach (object I in arr)
{
int productcode = (int)I;
string prodname = qtb.Getmasterproductname(productcode);
string imgname = ptb.GetProductCodeByID(productcode);
ptb.GetAllProductsItems(productcode);
nav.MoveToBookmark("Certification", false, true);
////////////////////////////////Code///////////////////////////
Paragraph newparagraph = new Paragraph(nav.Document);
nav.InsertParagraph(newparagraph);
ITextRange heading = newparagraph.AppendText("" + prodname + "");
heading.CharacterFormat.FontName = "Verdana";
heading.CharacterFormat.FontSize = 11;
heading.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
Body body = newparagraph.OwnerTextBody;
newparagraph.AppendPicture(Image.FromFile(@"h:\Websites\Smp_C\Templates\" + ptb.ProductCode + ".jpg"));
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange text = newparagraph.AppendText("" + ptb.ProductLongDescription + "");
text.CharacterFormat.FontName = "verdana";
text.CharacterFormat.FontSize = 10;
text.CharacterFormat.Bold = false;
newparagraph.ApplyStyle(BuiltinStyle.BlockText);
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading2 = newparagraph.AppendText("Play Value");
heading2.CharacterFormat.FontName = "Verdana";
heading2.CharacterFormat.FontSize = 11;
heading2.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendPicture(Image.FromFile(@"h:\Websites\Smp_C\Templates\PlaySymbol.jpg"));
newparagraph.AppendPicture(Image.FromFile(@"h:\Websites\Smp_C\Templates\PlaySymbol.jpg"));
newparagraph.AppendPicture(Image.FromFile(@"h:\Websites\Smp_C\Templates\PlaySymbol.jpg"));
newparagraph.AppendPicture(Image.FromFile(@"h:\Websites\Smp_C\Templates\PlaySymbol.jpg"));
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading3 = newparagraph.AppendText("Cost");
heading3.CharacterFormat.FontName = "Verdana";
heading3.CharacterFormat.FontSize = 11;
heading3.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
/////////////////////////////Code End//////////////////////////
ArrayList arr2 = new ArrayList();
arr2 = qtb.GetallProductsformasterproducts(productcode, quoteid);
foreach (object S in arr2)
{
Partbuilder B = (Partbuilder)S;
ITextRange text10 = newparagraph.AppendText("" + B.ProductDescription + "- £"+ B.ListPrice + ".00");
text10.CharacterFormat.FontName = "verdana";
text10.CharacterFormat.FontSize = 10;
text10.CharacterFormat.Bold = false;
newparagraph.AppendBreak(BreakType.LineBreak);
}
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading4 = newparagraph.AppendText("Total");
heading4.CharacterFormat.FontName = "Verdana";
heading4.CharacterFormat.FontSize = 11;
heading4.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading5 = newparagraph.AppendText("Carriage Charge");
heading5.CharacterFormat.FontName = "Verdana";
heading5.CharacterFormat.FontSize = 11;
heading5.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading6 = newparagraph.AppendText("Security Fence");
heading6.CharacterFormat.FontName = "Verdana";
heading6.CharacterFormat.FontSize = 11;
heading6.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading7 = newparagraph.AppendText("Welfare Facilities");
heading7.CharacterFormat.FontName = "Verdana";
heading7.CharacterFormat.FontSize = 11;
heading7.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
ITextRange heading8 = newparagraph.AppendText("Quotation Total");
heading8.CharacterFormat.FontName = "Verdana";
heading8.CharacterFormat.FontSize = 11;
heading8.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.PageBreak);
newparagraph = null;
}
Question 1. I woulk like to add a table after Partbuilder B = (Partbuilder)S; and I need to add B.ProductDescription first column, B.ListPrice to the second colum.
Question 2. Is it possible to add more paragraphs like
Paragraph newparagraph2 = new Paragraph(nav.Document);
nav.InsertParagraph(newparagraph2);
Question 3. When I out put the template the text created by code is right align I need to manually press the backspace key to align left.
Please help me with the issue.Thank you for the time.
-
ahamed
-
- Posts: 15
- Joined: Mon Aug 15, 2011 1:09 pm
Tue Sep 06, 2011 5:10 pm
Hi Harry,
Thanks for the reply I really appriciate your help. I have one more question
In my case I need to add a table immeidatly after- Partbuilder B = (Partbuilder)S;
please see the code below its works fine but adding the table end of the document. When I insert
Section section = document.AddSection();
its go to the bottom of the page could you please let me know is there any other way that i can insert a table in newparagraph with out adding a section.
Paragraph newparagraph = new Paragraph(nav.Document);
nav.InsertParagraph(newparagraph);
foreach (object item in items)
{
Partbuilder p = (Partbuilder)item;
ITextRange heading = newparagraph.AppendText("" + p.ProductDescription + "-(" + p.ProductCode + ") Age Range:" + p.AgeRange + "");
heading.CharacterFormat.FontName = "Verdana";
heading.CharacterFormat.FontSize = 11;
heading.CharacterFormat.Bold = true;
newparagraph.AppendBreak(BreakType.LineBreak);
newparagraph.AppendBreak(BreakType.LineBreak);
}
ArrayList arr2 = new ArrayList();
arr2 = qtb.GetallProductsformasterproducts(productcode, quoteid);
foreach (object S in arr2)
{
Partbuilder B = (Partbuilder)S;
ITextRange text10 = newparagraph.AppendText("" + B.ProductDescription + "- £" + B.ListPrice + ".00");
text10.CharacterFormat.FontName = "verdana";
text10.CharacterFormat.FontSize = 10;
text10.CharacterFormat.Bold = false;
//Paragraph newparagraph2 = new Paragraph(nav.Document);
//nav.InsertParagraph(newparagraph2);
//Table contents goes here
Section section = document.AddSection();
String[] header = { "", "" };
String[][] data =
{
new String[]{"" + B.ProductDescription + "", "£"+ B.ListPrice + ".00"}
};
Spire.Doc.Table table = section.AddTable();
table.ResetCells(data.Length + 1, header.Length);
for (int r = 0; r < data.Length; r++)
{
TableRow datarow = table.Rows[r + 1];
datarow.Height = 15;
datarow.HeightType = TableRowHeightType.Exactly;
datarow.RowFormat.BackColor = Color.Empty;
for (int c = 0; c < data[r].Length; c++)
{
datarow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
datarow.Cells[c].AddParagraph().AppendText(data[r][c]);
}
}
}
Thanks again for your support.
-
ahamed
-
- Posts: 15
- Joined: Mon Aug 15, 2011 1:09 pm
Wed Sep 07, 2011 8:26 am
Hi,
You don't need to create a new section a create your table within the new section. Please try:
- Code: Select all
using System;
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Interface;
namespace InsertTable
{
class Program
{
static void Main(string[] args)
{
Document doc = new Document(@"..\..\Summary_of_Science.doc");
BookmarksNavigator nav = new BookmarksNavigator(doc);
nav.MoveToBookmark("Position2", false, true);
Table table = CreateTable(nav.Document);
nav.InsertTable(table);
doc.SaveToFile("test.doc");
System.Diagnostics.Process.Start("test.doc");
}
private static Table CreateTable(IDocument doc)
{
String[] header = { "Name", "Capital", "Continent", "Area", "Population" };
String[][] data =
{
new String[]{"Argentina", "Buenos Aires", "South America", "2777815", "32300003"},
new String[]{"Bolivia", "La Paz", "South America", "1098575", "7300000"},
new String[]{"Brazil", "Brasilia", "South America", "8511196", "150400000"},
new String[]{"Canada", "Ottawa", "North America", "9976147", "26500000"},
new String[]{"Chile", "Santiago", "South America", "756943", "13200000"},
new String[]{"Colombia", "Bagota", "South America", "1138907", "33000000"},
new String[]{"Cuba", "Havana", "North America", "114524", "10600000"},
new String[]{"Ecuador", "Quito", "South America", "455502", "10600000"},
new String[]{"El Salvador", "San Salvador", "North America", "20865", "5300000"},
new String[]{"Guyana", "Georgetown", "South America", "214969", "800000"},
new String[]{"Jamaica", "Kingston", "North America", "11424", "2500000"},
new String[]{"Mexico", "Mexico City", "North America", "1967180", "88600000"},
new String[]{"Nicaragua", "Managua", "North America", "139000", "3900000"},
new String[]{"Paraguay", "Asuncion", "South America", "406576", "4660000"},
new String[]{"Peru", "Lima", "South America", "1285215", "21600000"},
new String[]{"United States of America", "Washington", "North America", "9363130", "249200000"},
new String[]{"Uruguay", "Montevideo", "South America", "176140", "3002000"},
new String[]{"Venezuela", "Caracas", "South America", "912047", "19700000"}
};
Spire.Doc.Table table = new Table(doc);
table.ResetCells(data.Length + 1, header.Length);
// ***************** First Row *************************
TableRow row = table.Rows[0];
row.IsHeader = true;
row.Height = 20; //unit: point, 1point = 0.3528 mm
row.HeightType = TableRowHeightType.Exactly;
row.RowFormat.BackColor = Color.Gray;
for (int i = 0; i < header.Length; i++)
{
row.Cells[i].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
Paragraph p = row.Cells[i].AddParagraph();
p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center;
TextRange txtRange = p.AppendText(header[i]);
txtRange.CharacterFormat.Bold = true;
}
for (int r = 0; r < data.Length; r++)
{
TableRow dataRow = table.Rows[r + 1];
dataRow.Height = 20;
dataRow.HeightType = TableRowHeightType.Exactly;
dataRow.RowFormat.BackColor = Color.Empty;
for (int c = 0; c < data[r].Length; c++)
{
dataRow.Cells[c].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
dataRow.Cells[c].AddParagraph().AppendText(data[r][c]);
}
}
return table;
}
}
}
Harry
Technical Support / Developer,
e-iceblue Support Team
-
harry.support
-
- Posts: 180
- Joined: Mon Nov 08, 2010 3:11 pm
Wed Sep 07, 2011 2:00 pm
Thanks for the reply it was really helpfull, how do I right align the text in a cell
String[][] data =
{
new String[]{"" + B.ProductDescription + "", "£"+ B.ListPrice + ".00"}
};
I need to show B.Listprice on right align in the table.
Thank you.
-
ahamed
-
- Posts: 15
- Joined: Mon Aug 15, 2011 1:09 pm
Thu Sep 08, 2011 1:51 am
Hi,
You just need to set the align of the paragraph of the cell to right, for example:
- Code: Select all
Paragraph p = cell.AddParagraph();
p.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Center;
Harry
Technical Support / Developer,
e-iceblue Support Team
-
harry.support
-
- Posts: 180
- Joined: Mon Nov 08, 2010 3:11 pm