【发布时间】:2016-11-14 22:19:31
【问题描述】:
我目前正在尝试找到一种方法来读入并将数据插入到 Word 文档中。到目前为止,这是我得到的:
class Program
{
static void Main(string[] args)
{
var FileName = @"C:\temp\test.DOC";
List<string> data = new List<string>();
Application app = new Application();
Document doc = app.Documents.Open(@"C:\temp\test.DOC");
foreach (Paragraph objParagraph in doc.Paragraphs)
{
data.Add(objParagraph.Range.Text.Trim());
}
//data.Insert
data.Insert(16, "Test 1");
data.Insert(16, "\tTest 2\tName\tAmount");
data.Insert(16, "Test 3");
data.Insert(16, "Test 4");
data.Insert(16, "Test 5");
data.Insert(16, "Test 6");
data.Insert(16, "Test 7");
data.Insert(16, "Test 8");
data.Insert(16, "Test 9");
data.Insert(16, "Test 10");
var x = doc.Paragraphs.Add();
x.Range.Text.Insert(0,"\tTest 2\tName\tAmount");
doc.SaveAs2(@"C:\temp\test3.DOC");
((_Document)doc).Close();
((_Application)app).Quit();
}
}
现在,这成功填充了列表数据 - 但我正在尝试在第 [16] 个索引处附加每个新的测试元素,并将其保存到 word 文档中。有没有一种简单的方法可以做到这一点,还是我只是在想这个问题?
我意识到字符串列表与表示单词文档的 Document 对象是分开的。
我在文档中的其他几个地方使用书签来添加数据,但我认为在这种情况下不能使用书签来放置数据 - 或者如果我不必使用我想远离那个书签。
编辑:我正在尝试在数据 [] 中的第 [16] 个位置插入 X 个元素。
编辑 2: 本质上我是在动态获取数据,我不确定需要向文档中添加多少记录/行,因此可能如下:
[15]
[16]\tName\tID\tAMOUNT
[17]\tName\tID\tAMOUNT
[18]\tName\tID\tAMOUNT
由于标题已经存在(名称,ID,AMOUNT),并且每次运行程序时,我都不确定要在文档中插入多少元素 - 所以只要放置每个元素在另一个之下,在文档模板的第 16 行,我已经设置了应该完成我想要做的事情。
图像 1 - 将图像转换为字符串数组 图像 2 - 将内容添加到字符串后的图像 - 这是生成的文档。 (这是要保存的)
【问题讨论】:
-
从您的帖子中不清楚您到底想要完成什么。 我正在尝试在第 [16] 个索引处附加每个新的测试元素,并将其保存到 word 文档中...???
-
添加了一些内容以提高清晰度 - 这有帮助吗?我只是想将 List
的每个元素添加到特定索引并将其附加到 word 文档的特定位置。 -
@JohnG 是的,我基本上想将数据列表的每个元素添加到文档中的第 [16] 行并保存。目标是将字符串列表的每个元素添加到文档中的第 [16] 行的新行中,并在每个项目之间添加一个制表符以创建各种“列”。很像:“\tTest 2\tName\tAmount
-
@JohnG 我不能分享原件——基本上原件一共有42行,标题行在文件的第15行(data
- )所以,如果data包含 5 个元素 - 我正在尝试将每个元素插入到文档的第 16 行。 (所以每个新行都会被下推一个 - 在文档中添加一个新行,所以在这个例子中我会以 47 行结束。
-
如果你不能分享原版... 做一个测试,这样我们就可以看到你必须从什么开始。当您说 所以,如果数据包含 5 个元素... 如果原始文档有 42 行,则不会发生这种情况...您正在读取原始文档中的每一行并将字符串放入列表数据中.这令人困惑。另外我要删除我以前的cmets。
标签: c# ms-word office-interop