C# 实现word文件里图片提取

/创建一个winform窗体,输入路径来获取word文件中的图片/
1.首先需要下载spire组件,两种办法
方法一
在这里插入图片描述
在这里插入图片描述
PM后直接输入要引用的就可以。
缺点:必须知道要引入的组件名,所以建议第二种方法
方法二
右击项目选择管理解决方案NuGet程序包
在这里插入图片描述
直接搜索就好

我们引入Spire包:
这是我引入的包
2.在using指令添加:

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

完善界面:
在这里插入图片描述
3.提取路径(输入路径):

private void text_click(object sender, EventArgs e)
        {
            //弹出一个选择目录的对话框
            
            OpenFileDialog file = new OpenFileDialog();
            file.Multiselect = true;
            
            file.ShowDialog();
            file.Filter = "所有文件(*doc*)|*.doc*";
            textBox1.Text = file.FileName;
        }

4.保存路径:

   private void text_click_2(object sender, EventArgs e)
        {
            FolderBrowserDialog path = new FolderBrowserDialog();
            path.ShowDialog();
            textBox2.Text = path.SelectedPath;
        }

5.核心设计思路:扫描文件来找到图片,每找到一次就存储一次

 private void button1_Click(object sender, EventArgs e)
        {
            Document document = new Document (@textBox1.Text, FileFormat.Docx);//路径添加?
            int index = 0;
        //获取文档的section
        foreach (Section section in document.Sections)
        {
            //获取section中的段落
            foreach (Paragraph paragraph in section.Paragraphs)
            {
                //获取段落中的文档对象
                foreach (DocumentObject docObject in paragraph.ChildObjects)
                {
                    //对对象的type进行判断,如果是图片,就提取出来
                    if (docObject.DocumentObjectType == DocumentObjectType.Picture)
                    {
                        DocPicture picture = docObject as DocPicture;
                        //给图片命名
                        String imageName = String.Format(@"\Image-{0}.png", index);
                        imageName = @textBox2.Text + imageName;
                        //保存图片
                        picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
                        index++;
                    }
                }
            }
        }
        MessageBox.Show("提取成功");
    }

提取成功:
在这里插入图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要比较两个Word文件的文本相似度,可以使用C#中的Microsoft.Office.Interop.Word库来处理Word文件。下面是一个简单的实现示例: ```csharp using Microsoft.Office.Interop.Word; using System; using System.IO; using System.Linq; namespace WordCompare { class Program { static void Main(string[] args) { string file1 = @"C:\path\to\file1.docx"; string file2 = @"C:\path\to\file2.docx"; string text1 = ExtractTextFromWord(file1); string text2 = ExtractTextFromWord(file2); Console.WriteLine($"文本1:{text1}"); Console.WriteLine($"文本2:{text2}"); // 比较文本相似度 double similarity = CalculateSimilarity(text1, text2); Console.WriteLine($"文本相似度:{similarity:P2}"); } /// <summary> /// 从Word文件提取文本 /// </summary> /// <param name="filePath">Word文件路径</param> /// <returns>提取的文本</returns> static string ExtractTextFromWord(string filePath) { Application word = new Application(); Document doc = word.Documents.Open(filePath); string text = doc.Content.Text; doc.Close(); word.Quit(); return text; } /// <summary> /// 计算文本相似度 /// </summary> /// <param name="text1">文本1</param> /// <param name="text2">文本2</param> /// <returns>文本相似度</returns> static double CalculateSimilarity(string text1, string text2) { var words1 = text1.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); var words2 = text2.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); int commonWords = words1.Intersect(words2).Count(); int totalWords = words1.Union(words2).Count(); return (double)commonWords / totalWords; } } } ``` 这个示例中使用了Microsoft.Office.Interop.Word库,通过ExtractTextFromWord函数提取Word文件中的文本内容。在CalculateSimilarity函数中,将文本分割为单词,然后计算两个文本中共同的单词数量以及总单词数,最后计算文本相似度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值