【问题标题】:How to write text into a word file using C#, .NET如何使用 C#、.NET 将文本写入 word 文件
【发布时间】:2018-04-27 20:20:49
【问题描述】:

我正在尝试使用 c# 编写一些文本并将其附加到 word 文件中,但是,我无法获得预期的结果。你能帮我解决这个问题吗?

下面是我的代码-

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace WFA1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //FileStream F = new FileStream("testdoc2.docx", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            Console.WriteLine("Sourav");           
            string filename = @"C:\\Desktop\\myfile.docx";
            Console.WriteLine(filename);
            try
            {
                using (FileStream fs = File.OpenWrite(filename))
                {
                    Byte[] content = new UTF8Encoding(true).GetBytes("Hello I am learning C#");
                    fs.Write(content, 0, content.Length);
                }
            }
            catch (Exception Ex)
            {
                Console.Write(e.ToString());
            }



        }
    }
}

上面的代码是一个windows窗体应用程序代码。我已经使用 FileStream 类来写入数据。但是我面临以下问题:-

  1. 没有创建文件
  2. 代码一直运行,直到我手动停止。

因此,我也尝试了以下方法,并且能够将文本写入文件。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Interop.Word;

namespace WFA1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc = app.Documents.Open("C:\\Users\\SS5014874\\Desktop\\testdoc1.docx");
            object missing = System.Reflection.Missing.Value;
            //string s = "Hi";
            //Console.WriteLine(s);               
            doc.Content.Text = textBox1.Text.ToString();
            doc.Save();
            doc.Close(ref missing);

            app.Quit(ref missing);
        }
    }
}

但是,我仍然没有得到预期的结果。以下是我的问题:-

  1. 无法附加任何文本。请让我知道如何使用这种方法追加。有什么方法可以调用来追加文本。
  2. 即使我使用了 Quit 方法,应用程序也不会退出,直到我手动退出。

另外,我在哪里可以找到类Microsoft.Office.Interop.Word的方法列表

请让我知道任何其他信息。

【问题讨论】:

  • 或使用它来创建文档并注意ActiveDocument.Save stackoverflow.com/questions/32693480/… 如果你不喜欢这些.. 然后做一个简单的谷歌搜索有更多的例子。
  • @MethodMan and upvoter:该帖子中接受的解决方案(您的第一条评论,而不是第二条评论)完全不正确,发布者正在覆盖文档并将其替换为文本文件,但他给出了文本归档一个.docx 扩展名,就好像它不是一个word 文档一样。但至少有人确实在那里发布了一个有用的链接:How to: Programmatically Insert Text into Word Documents
  • 我对链接的看法是,您可以使用发布的内容,然后取出或添加您需要适合您的用例的代码。

标签: c# .net winforms


【解决方案1】:

请点击此链接https://support.microsoft.com/en-us/kb/316384

或者

你可以试试这个。

添加以下指令:

  • 使用 Microsoft.Office.Interop.Word;

  • 使用 System.Reflection;

用于添加 Microsoft.Office.Interop.Word;

  • 在“项目”菜单上,单击“添加引用”。
  • 在 COM 选项卡上,找到 Microsoft Word 对象库,然后选择。

(在我的例子中是 Microsoft Word 12.0 对象库

使用这些代码。我正在尝试像您的代码一样维护这些代码 -

private void button1_Click(object sender, EventArgs e)
{
   Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();    
   Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(@"e:\testdoc1.docx");
   object missing = System.Reflection.Missing.Value;                        
   doc.Content.Text += textBox1.Text;
   app.Visible = true;    //Optional
   doc.Save();            
   this.Close();           
}

【讨论】:

    【解决方案2】:

    在这里动态创建word文档并在里面写简单的内容

      private async void btn_WriteIntoWord_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc; 
            try
            {
                object oMissing = System.Reflection.Missing.Value;
    
                object missing = System.Reflection.Missing.Value;
                lblProcessing.Text = "Writing File.. Please wait";
                int count=0;
    
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    doc = app.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
                    doc.Content.Font.Size = 12;
                    doc.Content.Font.Bold = 1;
                    if (count != 0) doc.Content.Text = "Dear Team,";
                    int innercount = 0;
                    foreach (DataGridViewCell cell in row.Cells)
                    {
                        innercount++;
    
                        if (count != 0)
                        {
                            if (cell.Value != null)
                            {
    
                                await Task.Delay(1);
                                string value = cell.Value.ToString();
                                switch(innercount)
                                {
                                    case 1:
                                         doc.Content.Text += "          EC Name: " + value;
                                        break;
                                    case 2:
                                         doc.Content.Text += "          SO#: " + value;
                                        break;
                                    case 3:
                                        doc.Content.Text += "           Monthly Hire Rate: " + value.Trim();
                                        break;
                                    case 4:
                                        doc.Content.Text += "           Bill amount: " + value.Trim();
                                        break;
                                    case 5:
                                        doc.Content.Text += "           Project code: " + value;
                                        break;
                                    case 6:
                                        doc.Content.Text += "           Line Text: " + value;
                                        break;
                                    case 7:
                                        doc.Content.Text += "           Total WD: " + value;
                                        break;
                                    case 8:
                                        doc.Content.Text += "           #NPL: " + value;
                                        break;
                                    case 9:
                                        doc.Content.Text += "           Project%: " + value;
                                        break;
                                    case 10:
                                        doc.Content.Text += "           Remark: " + value;
                                        break;
                                    case 11:
                                        doc.Content.Text += "           ALCON Emp ID: " + value;
                                        break;
                                    default:
                                        doc.Content.Text += value;
                                        break;
    
                                }
    
    
    
                            }
    
                        }
                    }
    
                    if (count != 0)
                    {
                        doc.Content.Text += "Thanks,";
                        doc.Content.Text += "NCS team";
                        string filecount = "test" + count.ToString() + ".docx";
                        object filename = @"D:\GenerateEmail\EmailBillingRates\EmailBillingRates\Word\" + filecount;
                        doc.SaveAs2(ref filename);
                        doc.Save();
                        doc.Close();
                    }
                    if (count == 10)
                        break;
                    count++;
                }
    
                app.Visible = true;    //Optional
    
                lblProcessing.Text = "";
               // MessageBox.Show("File Saved successfully");
                this.Close();
    
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Marshal.ReleaseComObject(app);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多