c#生成试卷。。。

.net下,操作Word的插件有NPOI,Spire,一版大家经常用的是NPOI,我在着手开发的时候,优先考虑的也是NPOI,然而时间比较着急,没有找到NPOI支持2003版本,

就放弃了,从网上发行Spire也可以支持Office的操作,就研究了一下。。。

注意,下载的时候要使用Free Spire.Doc版本,不要使用付费版本,非Free版本,生成的会有  红色提示。。标志

附上生成表格的方法。。

特别注意的是Section尽量用原来的。。

private void addDTK(Section section, int ishitinum)
        {
            int tihao = 1;
            if(ishitinum<=0)
            {
                return;    
            }
            int isize = 10;
            int iRow = ishitinum  / isize;//要加上一列。。。题号/答案显示文本
            if (ishitinum  % isize != 0)
            {
                iRow += 1;
            }

            if (ishitinum  < isize)//防止多造单元格。。
            {
                isize = ishitinum;
            }
            //实际上要创建2*iRow行10列的表格
            Table table = section.AddTable(true);
            //table.ApplyStyle(DefaultTableStyle.DarkList);
            
            table.ResetCells(2*iRow, isize + 1);
            //table.ResetCells(2 * iRow, isize);
            
            for (int i = 0; i < iRow * 2; i++)
            {
                TableRow row = table.Rows[i];
                //table.Rows[0].Cells[0].Width = table.Rows[0].Cells[1].Width = 50;
                //table.Rows[1].Cells[0].Width = table.Rows[1].Cells[1].Width = 150;
                for (int j = 0; j < (isize + 1); j++)//isize+1考虑到第一列。。
                {
                    row.Cells[j].Width = 50;//这个地方控制列宽
                    //题号都是奇数行
                    if (i % 2 != 0)//如果是奇数行,值设置j=0的单元格
                    {
                        if (j == 0)
                        {
                            Paragraph para1 = row.Cells[0].AddParagraph();
                            TextRange TR1 = para1.AppendText("答案");
                        }
                    }
                    else
                    {
                        Paragraph para1 = row.Cells[j].AddParagraph();
                        if (j == 0)
                        {
                            TextRange TR1 = para1.AppendText("题号");
                        }
                        else
                        {
                            if (tihao > ishitinum)
                            {
                                break;
                            }
                            para1.AppendText((tihao++).ToString());
                        }
                    }
                }
            }
        }

猜你喜欢

转载自www.cnblogs.com/niuge/p/9289443.html