Spire.Doc is a professional Word .NET library specifically designed for developers to create, read, write, convert and print Word document files. Get free and professional technical support for Spire.Doc for .NET, Java, Android, C++, Python.

Wed Dec 04, 2019 11:12 am

Hello,

I want use Spire.doc 7.10 to read txt or table Content controls(Rich text) of the word2016 . I find it is different from the Content controls which spire.doc generated。
What can i do for this issue?

howdo1t1
 
Posts: 3
Joined: Wed Dec 04, 2019 3:24 am

Thu Dec 05, 2019 6:59 am

Hi,

Thanks for your inquiry.
Please provide your input Word file and the code you were using for further investigation.
BTW, we provide Chinese service. You could contact us in Chinese next time if you want.

Sincerely,
Betsy
E-iceblue support team
User avatar

Betsy.jiang
 
Posts: 3099
Joined: Tue Sep 06, 2016 8:30 am

Tue Dec 10, 2019 7:25 am

Hi,

Greetings from E-iceblue.
Has your issue been resolved? If not, could you please provide your input Word file and the code you were using for further investigation.

Sincerely,
Betsy
E-iceblue support team
User avatar

Betsy.jiang
 
Posts: 3099
Joined: Tue Sep 06, 2016 8:30 am

Mon Dec 16, 2019 6:30 am

Betsy.jiang wrote:Hi,

Thanks for your inquiry.
Please provide your input Word file and the code you were using for further investigation.
BTW, we provide Chinese service. You could contact us in Chinese next time if you want.

Sincerely,
Betsy
E-iceblue support team


我发现是我用错控件名称,NG的部分应该是StructureDocumentTag,而非StructureDocumentTagInline,所以无法遍历内部信息。后面修改了一下,就可以了。
另外StructureDocumentTag在section.body里,不在Paragraph里。
Code: Select all
                Document document = new Document();
                document.LoadFromFile(wordFile);
                foreach (Section section in document.Sections)
                {
                    foreach (DocumentObject objbody in section.Body.ChildObjects)
                    {
                        if (objbody.DocumentObjectType == DocumentObjectType.StructureDocumentTag)  //判断控件
                        {
                            StructureDocumentTag sdt = objbody as StructureDocumentTag;
                            foreach (DocumentObject sdtobj in sdt.ChildObjects)
                            {
                                if (sdtobj.DocumentObjectType == DocumentObjectType.Table)  //判断控件-表格
                                {
                                    Table tab = sdtobj as Table;
                                    neirong = (5 * tab.Rows.Count).ToString();
                                    foreach (TableRow tr in tab.Rows)
                                    {
                                        foreach (TableCell cell in tr.Cells)
                                        {
                                            foreach (Paragraph con in cell.Paragraphs)
                                            {
                                                dt.Rows.Add( (con.Text);
                                            }
                                        }
                                    }
                                }
                                else if (objbody.DocumentObjectType == DocumentObjectType.StructureDocumentTag)   //控件中控件
                                {
                                    StructureDocumentTag sdtcell = objbody as StructureDocumentTag;
                                    foreach (DocumentObject sdto in sdtcell.ChildObjects)
                                    {
                                        if (sdto.DocumentObjectType == DocumentObjectType.Paragraph)
                                        {
                                            dt.Rows.Add( (sdto as Paragraph ).Text);
                                        }
                                    }
                                }
                            }
                        } else if (objbody.DocumentObjectType == DocumentObjectType.Paragraph)    //判断图片
                        {
                            Paragraph par = objbody as Paragraph;
                            foreach (DocumentObject picturex in objbody.ChildObjects)
                            {
                                if (picturex.DocumentObjectType == DocumentObjectType.Picture)
                                {
                                    DocPicture pic =picturex as DocPicture;
                                    imagelist.Add(pic.Image);
                                }
                            }
                        }
                    }
                }

howdo1t1
 
Posts: 3
Joined: Wed Dec 04, 2019 3:24 am

Mon Dec 16, 2019 6:45 am

您好,

感谢分享解决方案。
如果在使用我们产品时遇到任何问题,欢迎与我们联系。

Sincerely,
Betsy
E-iceblue support team
User avatar

Betsy.jiang
 
Posts: 3099
Joined: Tue Sep 06, 2016 8:30 am

Mon Dec 16, 2019 6:53 am

Betsy.jiang wrote:Hi,

Greetings from E-iceblue.
Has your issue been resolved? If not, could you please provide your input Word file and the code you were using for further investigation.

Sincerely,
Betsy
E-iceblue support team


十分感谢您的询问。还真的是有问题 :lol: :lol:
我在用spire.doc生成word时(上文是遍历一份word各个控件,现在把内容调整后生成word),发现每一个paragraph后面会有一个“段落后的空格”,在DocumentObjectType.Table中会非常明显,导致table的行距很大,请问这该如何去掉。另外,请问行高和列宽怎么设置,宽度的20F与word中的高宽(厘米)是如何换算的呢?
使用的部分代码如下:
Code: Select all
sd = new StructureDocumentTag(doc);
                        section.Body.ChildObjects.Add(sd);
                        DataTable  ds = spltbiao(dt.Rows[i][5].ToString());
                        Table ta = new Table(doc ) ;
                        ta.ResetCells(ds.Rows.Count, ds.Columns.Count); ta.DefaultColumnWidth = 20F;
                        TextRange range= new TextRange (doc);
                        range.CharacterFormat.FontName = "Arial";
                        range.CharacterFormat.FontSize = 10;
                        range.CharacterFormat.CharacterSpacing = 0;
                        range.CharacterFormat.TextColor = Color.Black;
                        range.CharacterFormat.Bold = true;
                        for (int ix = 0;ix<ds.Rows .Count;ix++)
                        {
                            ta.Rows[ix].Height = 20F;
                            for (int iy = 0; iy < ds.Columns.Count; iy++)
                            {
                                range.Text = ds.Rows[ix][iy].ToString ();
                                ta[ix, iy].AddParagraph().AppendText(range.Text);
                            }
                        }
                        sd.SDTContent.ChildObjects.Add(ta);

howdo1t1
 
Posts: 3
Joined: Wed Dec 04, 2019 3:24 am

Mon Dec 16, 2019 9:40 am

您好,

感谢咨询。
截图中删除段后的空格是软件的功能。您可以通过设置段后距离为0来实现同样的效果。请遍历所有在table中的段落, 然后设置段后距离为0.
Code: Select all
Paragraph par =  ta[ix, iy].AddParagraph();
par.Format.BeforeSpacing = 0;


此外,Spire.Doc 里的默认单位都是磅,1磅约等于0.03527厘米,1厘米约等于28.35磅。

Sincerely,
Betsy
E-iceblue support team
User avatar

Betsy.jiang
 
Posts: 3099
Joined: Tue Sep 06, 2016 8:30 am

Return to Spire.Doc