• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 380
  • Last Modified:

Creating tables with alternating text in Word using Javascript

I am trying to create a MS Word doc with Javascript. I have had some success with being able to either create the table or the text and populate the table cells with values. When I try to alternate a table then text then another table, the text ends up in the first cell of the first table. This is run from an IE browser.
What am I missing?

function fnCreateWord() {
	var objWord = new ActiveXObject("Word.Application");
	objWord.Caption = "Test";
 
	objDoc = objWord.Documents.Add()
	objWord.Application.Visible = true;
	objSelection = objWord.Selection;
	
	var tbl = objDoc.Tables.Add(objWord.Selection.Range,4,3);
 
// The following is placed properly into the second cell and second column. 	
	var cCell = tbl.cell(2,2).range;
	tbl.cell(2,2).Column.Width = 100;
	cCell.Font.Bold = true;
	cCell.Font.Size = "18";
	cCell.text =  "ZZZZZZZZZZZZ";
 
// The following ends up in first row and the first column of tbl. It needs to be after the table. 
	objSelection.Font.Name = "Arial";
	objSelection.Font.Size = "18";
	objSelection.TypeText("AAAAAAAAAAAAAA");
	objSelection.TypeParagraph();
 
	objSelection.Font.Size = "14";
	objSelection.TypeText("" + Date() );
	objSelection.TypeParagraph();
	objSelection.TypeParagraph();
// There needs to be another table inserted here with more text following. 
}

Open in new window

0
HarleyInDTX
Asked:
HarleyInDTX
1 Solution
 
Pravin AsarPrincipal Systems EngineerCommented:
Here is a complete solution.

Please try it with IE browser

<html>
<head>
<title>Create Word Document/Page Title</title>
<style type="text/css">
</style>
<script language="javascript">
var EndOfStory =6;
 
function fnCreateWord() {
        var objWord = new ActiveXObject("Word.Application");
        objWord.Caption = "Test";
 
        objDoc = objWord.Documents.Add()
        objWord.Application.Visible = true;
 
        objSelection = objWord.Selection;
        var paragraph = objDoc.Paragraphs.Add();
 
        // Text Before Table 1
        paragraph.Range.Text = "Table 1";
 		objSelection.EndKey(EndOfStory);
        objSelection.TypeParagraph();
        objSelection.TypeParagraph();
 
        // Table 1
        objSelection = objWord.Selection;        
        var tbl1 = objDoc.Tables.Add(objSelection.Range,3,3);
	    var objTable = tbl1;
 
		objTable.Cell(1, 1).Range.Text = "Row 1, Column 1";
		objTable.Cell(1, 2).Range.Text = "Row 1, Column 2";
		objTable.Cell(1, 3).Range.Text = "Row 1, Column 3";
 		objSelection.EndKey(EndOfStory);
		objSelection.TypeParagraph();
 
        // Some Text 
		objSelection.TypeParagraph();
		objSelection.TypeParagraph();
        objSelection.Text = "My Text";
 		objSelection.EndKey(EndOfStory);
		objSelection.TypeParagraph();
		objSelection.TypeParagraph();
 
        // Text Before Table 2
        objSelection = objWord.Selection;
        var paragraph = objDoc.Paragraphs.Add();
        paragraph.Range.Text = "Table 2";
 		objSelection.EndKey(EndOfStory);
        objSelection.TypeParagraph();
 
        // Table 2
 
        objSelection = objWord.Selection;
        objSelection.TypeParagraph();
        var tbl2 = objDoc.Tables.Add(objSelection.Range,3,3);
	    
 
		tbl2.Cell(1, 1).Range.Text = "Table 2 Row 1, Column 1";
		tbl2.Cell(1, 2).Range.Text = "Table 2 Row 1, Column 2";
		tbl2.Cell(1, 3).Range.Text = "Table 2 Row 1, Column 3";
        objSelection.EndKey (EndOfStory);
        objSelection.TypeParagraph();
}
</script>
</head>
<body onload="fnCreateWord();">
</body>
</html>

Open in new window

0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now