为有中文需求的客户提供多渠道中文技术支持.

Sat Apr 02, 2022 10:30 am

请问如何才能遍历这个文档内的图片内容,并且读取到 替换文字AlternativeText的内容

iuouioiou.zip


谢谢

xjdataspire
 
Posts: 24
Joined: Mon Mar 28, 2022 2:06 am

Sat Apr 02, 2022 10:31 am

我试了下面的办法。不行。


Code: Select all
            foreach (Spire.Doc.Section sec in docSpire.Sections)
            {
                foreach (Spire.Doc.Documents.Paragraph paragraph in sec.Paragraphs)
                {
                    foreach (DocumentObject docObject in paragraph.ChildObjects)
                    {
                        Console.WriteLine(docObject.DocumentObjectType);
                        if (docObject is DocPicture)
                        {
                            DocPicture picture = docObject as DocPicture;
                            Console.WriteLine(picture.AlternativeText);
                        }
                    }
                }
            }

xjdataspire
 
Posts: 24
Joined: Mon Mar 28, 2022 2:06 am

Tue Apr 05, 2022 2:17 pm

您好,

感谢您的询问。

您的代码只遍历了章节中的段落而忽略了其他内容元素。经过观察您的文档发现,文档中的内容并不是直接以段落形式存在,而是放在表格中。因此您需要修改您查找图片对象的代码。以下是修改后的代码供您参考。有任何其他问题欢迎您再与我们联系。

Code: Select all
            Document doc = new Document();
            doc.LoadFromFile("iuouioiou.docx");

            foreach (Section sec in doc.Sections)
            {
                foreach (DocumentObject bodyItem in sec.Body.ChildObjects)
                {
                    if(bodyItem is Paragraph)
                    {
                        foreach (DocumentObject docObject in bodyItem.ChildObjects)
                        {
                            Console.WriteLine(docObject.GetType());
                            if (docObject is DocPicture)
                            {
                                DocPicture picture = docObject as DocPicture;
                                Console.WriteLine(picture.AlternativeText);
                            }
                        }
                    }
                    if(bodyItem is Table)
                    {
                        //获取表格
                        Table table = bodyItem as Table;
                        for(int i=0;i< table.Rows.Count; i++)
                        {
                            //遍历表格行
                            TableRow row = table.Rows[i];
                            for(int j = 0; j < row.Cells.Count; j++)
                            {
                                //遍历行中单元格
                                TableCell cell = row.Cells[j];
                                foreach (DocumentObject docObject in cell.ChildObjects)
                                {
                                    //遍历单元格中所有子对象 找到段落
                                    if (docObject is Paragraph)
                                    {
                                        //遍历段落中的子对象 找到图片
                                        foreach (DocumentObject paraItem in docObject.ChildObjects)
                                        {
                                            if (paraItem is DocPicture)
                                            {
                                                //打印目标信息
                                                DocPicture picture = paraItem as DocPicture;
                                                Console.WriteLine(picture.AlternativeText);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                }
            }
            Console.Read();
Sincerely,
Andy
E-iceblue support team
User avatar

Andy.Zhou
 
Posts: 483
Joined: Mon Mar 29, 2021 3:03 am

Return to 中文技术支持