1--我要在程序中调用word打开doc文件,应该很好实现,没时间找了!!
2--另外用C#作的winform的小项目(大概10000多行代码)用什么工具发布比较好(制作setUp文件)?
   用.net自带的还是用installShare,有什么好的文章介绍一下,谢谢
3--如何很好的把一个很大的string字符串转换为一个FileStream流

解决方案 »

  1.   

    还有,如果我想在程序中把doc文档(图片不考虑)转换为一个.txt文件,我用了Word.ApplicationClass和Word.Document但是老实出问题(只能转换第一部分),我的代码为:(由于找不到相关的文档,这些代码是我一点一点试验的),请高手指教!!                 Word.ApplicationClass myWordApp=new Word.ApplicationClass(); 
    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); 
      

  2.   

    问题一:
    以下代码来自: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();
      

  3.   

    问题二:其实你按照提示去操作就可以了!
    去参考一下也可以:
    http://blog.csdn.net/xiayule/archive/2005/01/09/246372.aspx
      

  4.   

    如何很好的把一个很大的string字符串转换为一个FileStream流?
    不怎么了解,一般是把流转换成string!
      

  5.   

    谢谢 tl_pear(飘叶寻梦) 
    在程序中调用word打开一个文档,就是跟平时打开一个doc文件一样,只不过我想在我自己的界面中让用户双击某一格图标,调用word打开,就像.java里的exec(*.exe),vb里的shell(*.exe);,应该不是很麻烦,不过没有时间找了转换word->txt,如果时间来不及,就不准备实现了,如果大家有好的方法希望教教小弟。
      

  6.   

    在程序中调用word打开一个文档,就是跟平时打开一个doc文件一样,只不过我想在我自己的界面中让用户双击某一格图标,调用word打开,
    记得好象有个类似 exec 的东西可以的!记不清楚了!就是直接调用word应用程序!
      

  7.   

    System.Diagnostics.Process.Start(@"d:\ .doc")可以直接打开