c#读取word中表格数据
表格中可以插入文本数据以及图片,读取表格时需要通过不同方法来读取里面的内容。
基本思路:加载word文档,获取section节,获取表格,遍历表格中的单元格,获取文本数据写入txt文档,获取图片保存到指定路径。
具体可参考如下代码:
1. 读取表格中的文本数据
using Spire.Doc;
using Spire.Doc.Documents;
using System.IO;
using System.Text;
namespace GetTableData
{
class Program
{
static void Main(string[] args)
{
//载入Word文档
Document document = new Document("test.docx");
Section section = document.Sections[0];
//获取文本框中第一个表格
Table table = section.Body.Tables[0] as Table;
StringBuilder sb = new StringBuilder();
//遍历表格中的段落并提取文本
foreach (TableRow row in table.Rows)
{
foreach (TableCell cell in row.Cells)
{
foreach (Paragraph paragraph in cell.Paragraphs)
{
sb.AppendLine(paragraph.Text.ToString());
}
}
}
File.WriteAllText("tabledata.txt" , sb.ToString());
System.Diagnostics.Process.Start("tabledata.txt");
}
}
}
文本读取结果:
2. 读取表格中的图片
using System;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
namespace Extract_Images_From_Tables_in_Word
{
class Program
{
static void Main(string[] args)
{
//创建Document实例
Document doc = new Document();
//加载Word文档
doc.LoadFromFile("sample.docx");
//获取文档中第一个节
Section section = doc.Sections[0];
//调用ExtractImagesFromTables方法,提取表格中的图片
ExtractImagesFromTables(section);
//关闭
doc.Close();
}
//创建静态方法ExtractImagesFromTables,参数为Section对象
static void ExtractImagesFromTables(Section section)
{
int index = 0;
String imageName = null;
//遍历section中的表格,提取表格中的图片并保存到本地
foreach (Table table in section.Tables)
{
for (int i = 0; i < table.Rows.Count; i++)
{
for (int j = 0; j < table.Rows[i].Cells.Count; j++)
{
foreach (Paragraph para in table[i, j].Paragraphs)
{
foreach (DocumentObject obj in para.ChildObjects)
{
if (obj is DocPicture)
{
imageName = String.Format(@"images\TableImage-{0}.png", index);
(obj as DocPicture).Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
index++;
}
}
}
}
}
}
}
}
}
执行程序后,在vs项目文件夹bin下查看图片读取结果。