[英]How to write text into a word file using C#, .NET
I am trying to write and append some text to a word file using c#, however, I am unable to get expected results.我正在尝试使用 c# 编写一些文本并将其附加到 word 文件中,但是,我无法获得预期的结果。 Could you please help me out of this ?
你能帮我解决这个问题吗?
Below is my code-下面是我的代码-
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());
}
}
}
}
The above code is a windows form application code behind.上面的代码是一个windows窗体应用程序代码后面。 I have use FileStream class to write data.
我已经使用 FileStream 类来写入数据。 However I am facing below issues :-
但是我面临以下问题:-
- No file is getting created
没有文件被创建
- Code keeps on running until I stop it manually.
代码一直运行,直到我手动停止它。
Hence, I tried the below approach too, and I was able to write text to the file.因此,我也尝试了以下方法,并且能够将文本写入文件。
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);
}
}
}
However, still I did not get expected results.但是,我仍然没有得到预期的结果。 below are my issues:-
以下是我的问题:-
- Unable to append any text.
无法附加任何文本。 Please let me know how to append using this approach.
请让我知道如何使用这种方法追加。 is there any method we can call to append texts.
我们可以调用任何方法来附加文本吗?
- Even though I have used Quit method, application is not quitting, until I quit manually.
即使我使用了 Quit 方法,应用程序也不会退出,直到我手动退出。
Also, where can I find the list of methods of class Microsoft.Office.Interop.Word
另外,我在哪里可以找到
Microsoft.Office.Interop.Word
类的方法列表
Please let me know for any other information.请让我知道任何其他信息。
Please follow this link https://support.microsoft.com/en-us/kb/316384请点击此链接https://support.microsoft.com/en-us/kb/316384
Or或者
You can try this.你可以试试这个。
Add the following directives:添加以下指令:
using Microsoft.Office.Interop.Word;使用 Microsoft.Office.Interop.Word;
using System.Reflection;使用 System.Reflection;
For adding Microsoft.Office.Interop.Word;用于添加 Microsoft.Office.Interop.Word;
(In my case it is Microsoft Word 12.0 Object Library ) (在我的例子中是Microsoft Word 12.0 Object Library )
Use these codes.使用这些代码。 I am trying to maintain these codes like your codes -
我正在尝试像您的代码一样维护这些代码-
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();
}
Here you dynamically create word document and write simple content in it在这里您可以动态创建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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.