任务:
任务是将任意长度的字符串插入到新的
.doc
(不是 .docx
)文件中。这意味着创建一个新的 .doc
文件并将我的字符串写入其中。我尝试使用 NuGet 包 NPOI.HWPF
来完成此任务(示例如下)。
我遇到这样的问题:为了创建新文件,需要打开一个现有文件作为模板写入文本,然后将文件另存为新文件。但是,如果模板中没有文本空间,则不会写入任何内容。
此外,我在尝试运行程序时不断收到消息:
一处房产声称在开始前就结束了(29)!重新开始,并希望有最好的结果。
你能帮我弄清楚如何解决这个任务吗?我愿意使用其他库,但它们不需要许可证。
using NPOI.HWPF;
namespace ConsoleApp4;
class Program
{
static void Main(string[] args)
{
string filePathEmptyDoc = "/home/evgeniy/test/empty.doc";
string filePathNewDoc = "/home/evgeniy/test/newDoc.doc";
string content = "test text";
using (FileStream fs = new FileStream(filePathEmptyDoc, FileMode.Open, FileAccess.Read))
{
NPOI.HWPF.HWPFDocument doc = new HWPFDocument(fs);
NPOI.HWPF.UserModel.Range range = doc.GetRange();
range.InsertBefore(content);
using (FileStream ofs = new FileStream(filePathNewDoc, FileMode.Create, FileAccess.Write))
{
doc.Write(ofs);
}
}
}
}
我尝试使用 NuGet 包 NPOI.HWPF 创建一个新的 .doc 文件并在其中插入任意长度的字符串
下面是另一种方法。但我不确定这是否需要许可证。
Nuget:DotNetCore.NPOI
源代码:
using NPOI.XWPF.UserModel;
using System.Text;
class Program
{
static void Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
string filePathEmptyDoc = "/home/evgeniy/test/empty.doc";
string filePathNewDoc = "/home/evgeniy/test/newDoc.doc";
string content = "test text";
using (FileStream fsOpen = new FileStream(filePathEmptyDoc, FileMode.Open, FileAccess.Read))
{
XWPFDocument doc = new XWPFDocument(fsOpen);
var para0 = doc.CreateParagraph();
para0.Alignment = ParagraphAlignment.LEFT;
XWPFRun run0 = para0.CreateRun();
run0.SetText(content);
using (var fs = new FileStream(filePathNewDoc, FileMode.Create, FileAccess.Write))
{
doc.Write(fs);
}
Console.WriteLine("Word Done");
}
}
}
参考:示例代码
希望这对您有帮助。