1--我要在程序中调用word打开doc文件,应该很好实现,没时间找了!!
2--另外用C#作的winform的小项目(大概10000多行代码)用什么工具发布比较好(制作setUp文件)?
用.net自带的还是用installShare,有什么好的文章介绍一下,谢谢
3--如何很好的把一个很大的string字符串转换为一个FileStream流
2--另外用C#作的winform的小项目(大概10000多行代码)用什么工具发布比较好(制作setUp文件)?
用.net自带的还是用installShare,有什么好的文章介绍一下,谢谢
3--如何很好的把一个很大的string字符串转换为一个FileStream流
Word.Document myWordDoc=new Word.DocumentClass();
string[] strContent;
object strFileName=@"d:\2.doc";
object option=System.Reflection.Missing.Value;
myWordDoc=myWordApp.Documents.Open2000(ref strFileName,ref option,ref option,ref option,ref option,ref option,ref option,ref option,ref option,ref option,ref option,ref option);
int numOfSection = myWordDoc.Sections.Count;
strContent = new string[numOfSection];
for(int i=0; i<numOfSection; i++)
{
strContent[i]=myWordDoc.Sections.First.Range.Text;
}
string FILE_NAME=@"d:\hello.txt";
StreamWriter sr = File.CreateText(FILE_NAME);
for(int i=0; i<numOfSection; i++)
{
sr.WriteLine (strContent[i]);
}
sr.Close(); myWordDoc.Close(ref option, ref option, ref option);
//关闭WordApp组件对象
myWordApp.Quit(ref option, ref option, ref option);
以下代码来自:http://support.microsoft.com/default.aspx?scid=KB;EN-US;311452 添加命名空间:
using Word;
using System.Reflection;
在一个按纽的单击事件里加上如下代码:object oMissing = System.Reflection.Missing.Value;
object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined book *///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.Books.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.Books.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.Books.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.Books.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.Books.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.Books.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
do
{
wrdRng = oDoc.Books.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.Books.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.Books.get_Item(ref oEndOfDoc).Range;
wrdRng.InsertParagraphAfter();
wrdRng.InsertAfter("THE END.");//Close this form.
this.Close();
去参考一下也可以:
http://blog.csdn.net/xiayule/archive/2005/01/09/246372.aspx
不怎么了解,一般是把流转换成string!
在程序中调用word打开一个文档,就是跟平时打开一个doc文件一样,只不过我想在我自己的界面中让用户双击某一格图标,调用word打开,就像.java里的exec(*.exe),vb里的shell(*.exe);,应该不是很麻烦,不过没有时间找了转换word->txt,如果时间来不及,就不准备实现了,如果大家有好的方法希望教教小弟。
记得好象有个类似 exec 的东西可以的!记不清楚了!就是直接调用word应用程序!