Please rectify VB converted code

  • Thread starter Please rectify C# converted code
  • Start date
P

Please rectify C# converted code

I had converteed this code from vb to c#
the microsoft.office word reference was added
I had receievd the code in vb and had it converted to C#
But am unable to rectify a few errors

Wht this code does is, takes one word file extracts a certain page and
inserts into another file and creates it
---------------------------------
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Word = Microsoft.Office.Interop.Word;
using System.Reflection;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined
bookmark */

//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Heading 1";
oPara1.Range.Font.Bold = 1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter();

//Insert a paragraph at the end of the document.
Word.Paragraph oPara2;
object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara2.Range.Text = "Heading 2";
oPara2.Format.SpaceAfter = 6;
oPara2.Range.InsertParagraphAfter();

//Insert another paragraph.
Word.Paragraph oPara3;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara3.Range.Text = "This is a sentence of normal text. Now here is
a table:";
oPara3.Range.Font.Bold = 0;
oPara3.Format.SpaceAfter = 24;
oPara3.Range.InsertParagraphAfter();

//Insert a 3 x 5 table, fill it with data, and make the first row
//bold and italic.
Word.Table oTable;
Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);
oTable.Range.ParagraphFormat.SpaceAfter = 6;
int r, c;
string strText;
for (r = 1; r <= 3; r++)
for (c = 1; c <= 5; c++)
{
strText = "r" + r + "c" + c;
oTable.Cell(r, c).Range.Text = strText;
}
oTable.Rows[1].Range.Font.Bold = 1;
oTable.Rows[1].Range.Font.Italic = 1;

//Add some text after the table.
Word.Paragraph oPara4;
oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);
oPara4.Range.InsertParagraphBefore();
oPara4.Range.Text = "And here's another table:";
oPara4.Format.SpaceAfter = 24;
oPara4.Range.InsertParagraphAfter();

//Insert a 5 x 2 table, fill it with data, and change the column
widths.
wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);
oTable.Range.ParagraphFormat.SpaceAfter = 6;
for (r = 1; r <= 5; r++)
for (c = 1; c <= 2; c++)
{
strText = "r" + r + "c" + c;
oTable.Cell(r, c).Range.Text = strText;
}
oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of
columns 1 & 2
oTable.Columns[2].Width = oWord.InchesToPoints(3);

//Keep inserting text. When you get to 7 inches from top of the
//document, insert a hard page break.
object oPos;
double dPos = oWord.InchesToPoints(7);
oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
do
{
wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
wrdRng.ParagraphFormat.SpaceAfter = 6;
wrdRng.InsertAfter("A line of text");
wrdRng.InsertParagraphAfter();
oPos = wrdRng.get_Information

(Word.WdInformation.wdVerticalPositionRelativeToPage);
}
while (dPos >= Convert.ToDouble(oPos));
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
object oPageBreak = Word.WdBreakType.wdPageBreak;
wrdRng.Collapse(ref oCollapseEnd);
wrdRng.InsertBreak(ref oPageBreak);
wrdRng.Collapse(ref oCollapseEnd);
wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
wrdRng.InsertParagraphAfter();

//Insert a chart.
Word.InlineShape oShape;
object oClassType = "MSGraph.Chart.8";
wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref
oMissing,
ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);

//Demonstrate use of late bound oChart and oChartApp objects to
//manipulate the chart object with MSGraph.
object oChart;
object oChartApp;
oChart = oShape.OLEFormat.Object;
oChartApp = oChart.GetType().InvokeMember("Application",
BindingFlags.GetProperty, null, oChart, null);

//Change the chart type to Line.
object[] Parameters = new Object[1];
Parameters[0] = 4; //xlLine = 4
oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,
null, oChart, Parameters);

//Update the chart image and quit MSGraph.
oChartApp.GetType().InvokeMember("Update",
BindingFlags.InvokeMethod, null, oChartApp, null);
oChartApp.GetType().InvokeMember("Quit",
BindingFlags.InvokeMethod, null, oChartApp, null);
//... If desired, you can proceed from here using the Microsoft Graph
//Object model on the oChart and oChartApp objects to make additional
//changes to the chart.

//Set the width of the chart.
oShape.Width = oWord.InchesToPoints(6.25f);
oShape.Height = oWord.InchesToPoints(3.57f);

//Add text after the chart.
wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
wrdRng.InsertParagraphAfter();
wrdRng.InsertAfter("THE END.");

//Close this form.
//this.Close();

}
protected void Button2_Click(object sender, EventArgs e)
{
object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc";

//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);

//Insert a paragraph at the beginning of the document.
Word.Paragraph oPara1;
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
oPara1.Range.Text = "Statement of Work";
oPara1.Range.Font.Bold =1;
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
oPara1.Range.InsertParagraphAfter();

}
protected void Button3_Click(object sender, EventArgs e)
{
ParseWordDoc("e://test.doc", "e://test1.doc");
}
private void ParseWordDoc(string Filename, string NewFileName)
{
Microsoft.Office.Interop.Word.Application WordApp = new
Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document BaseDoc =
default(Microsoft.Office.Interop.Word.Document);
Microsoft.Office.Interop.Word.Document DestDoc =
default(Microsoft.Office.Interop.Word.Document);

int intNumberOfPages = 0;
string intNumberOfChars = null;
int intPage = 0;

//Word Constants
object wdGoToPage = 1;
object wdStory = 6;
object wdExtend = 1;
object wdCharacter = 1;

//Show WordApp
WordApp.ShowMe();

//Load Base Document

BaseDoc = WordApp.Documents.Open(Filename);
BaseDoc.Repaginate();

//Loop through pages
//intNumberOfPages = BaseDoc.BuiltInDocumentProperties("Number of
Pages").value;
intNumberOfPages = BaseDoc.
intNumberOfChars = BaseDoc.BuiltInDocumentProperties("Number of
Characters").value;

for (intPage = 1; intPage <= intNumberOfPages; intPage++) {
if (intPage == intNumberOfPages) {
WordApp.Selection.EndKey(wdStory);
}
else {
WordApp.Selection.GoTo(wdGoToPage, 2);
Application.DoEvents();

WordApp.Selection.MoveLeft(Unit = wdCharacter, Count = 1);
}

Application.DoEvents();

WordApp.Selection.HomeKey(wdStory, wdExtend);
Application.DoEvents();

WordApp.Selection.Copy();
Application.DoEvents();

//Create New Document
DestDoc = WordApp.Documents.Add;
DestDoc.Activate();
WordApp.Selection.Paste();
DestDoc.SaveAs(NewFileName + intPage.ToString + ".doc");
DestDoc.Close();
DestDoc = null;

WordApp.Selection.GoTo(wdGoToPage, 2);
Application.DoEvents();

WordApp.Selection.HomeKey(wdStory, wdExtend);
Application.DoEvents();

WordApp.Selection.Delete();
Application.DoEvents();
}

//BaseDoc.Close(false);
BaseDoc = null;

//WordApp.Quit();
WordApp = null;
}

}
 
A

Alberto Poblacion

"Please rectify C# converted code" <Please rectify C# converted
(e-mail address removed)> wrote in message
I had converteed this code from vb to c#
the microsoft.office word reference was added
I had receievd the code in vb and had it converted to C#
But am unable to rectify a few errors

What exactly are the errors that you are getting? From a C# point of
view the code looks syntactically correct, but I see something that doesn't
fit: You are inheriting from System.Web.UI.Page, which would indicate that
you are programming a Web Form, but then the code makes several calls to
Application.DoEvents, which is only used in Windows Forms (there is an
Application property in the Page class but it does not have a DoEvents
method, which doesn't make sense for a Web app).
 
P

Please rectify C# converted code

I am so sorry pls..check only Button 3 Click Event

....................................................................................
 
A

Alberto Poblacion

"Please rectify C# converted code"
I am so sorry pls..check only Button 3 Click Event

Well, the Button 3 Click Event contains only this:

protected void Button3_Click(object sender, EventArgs e)
{
ParseWordDoc("e://test.doc", "e://test1.doc");
}

which should compile correctly either on WinForms or on WebForms. Now, the
ParseWordDoc method does contain a substantial amount of code, which on
first sight seems correct (on the condition that it is placed on a WinForm
and not a WebForm). So the question remains, what are the exact errors that
you are getting?

Also, note that you are setting some local variables to null near the end of
the method. This is probably inherited from old code in VB6, but it is
useless in .Net (it will not immediately destroy the object and will not
cause Word to close). However, it should not cause any errors.
 
A

Alberto Poblacion

Mark Rae said:
But shouldn't be used in an ASP.NET app, obviously...

Notice my next sentence after the one you quoted: "... (on the condition
that it is placed on a WinForm
and not a WebForm)"
 
P

Please rectify C# converted code

Hi what is the alternative for Application.Doevnets in WEbpgaes.
 
C

Cor Ligthert[MVP]

Some JavaScript.

A webpage is under the control of the web browser that is used to the
client, there is not a real physical contact with the server where the
AspNet application is running.

I think that I am not the only one who is curious to the original vb code
which you said to have converted

Cor


"Please rectify C# converted code"
 
A

Alberto Poblacion

"Please rectify C# converted code"
Hi what is the alternative for Application.Doevnets in WEbpgaes.

The alternative is simply to remove it.
In a Windows Form, Application.DoEvents lets the Form process all
pending events, so the Form appears to be responsive while the method that
contains the DoEvents call is still executing. This is not applicable to a
Web Form, since the code is running in the server while the form is being
displayed in a browser.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top