Javascript 如何添加多行以及如何使用c#替换spire文档中的值?

Javascript 如何添加多行以及如何使用c#替换spire文档中的值?,javascript,c#,asp.net-mvc,asp.net-core,c#-4.0,Javascript,C#,Asp.net Mvc,Asp.net Core,C# 4.0,我有文档文件,我想替换表中的字符串值,并在文档文件中添加行并将其转换为PDF。 例子。我在数据表中有5条记录,然后用现有spire文档中的记录添加5行并替换值。 请检查文档文件的附加照片。 我建议您使用更简单的邮件合并 首先,通过插入合并字段修改模板word文档,如下所示: 其次,请参阅下面的示例代码,将datatable中的数据合并到word表中: using System.Collections; using System.Collections.Generic; using System

我有文档文件,我想替换表中的字符串值,并在文档文件中添加行并将其转换为PDF。 例子。我在数据表中有5条记录,然后用现有spire文档中的记录添加5行并替换值。 请检查文档文件的附加照片。

我建议您使用更简单的邮件合并

首先,通过插入合并字段修改模板word文档,如下所示:

其次,请参阅下面的示例代码,将datatable中的数据合并到word表中:

using System.Collections;
using System.Collections.Generic;
using System.Data;
using Spire.Doc;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            Document document = new Document();
            //load word document
            document.LoadFromFile("template.docx");

            //convert datatable to list
            DataTable dt = GetDataTable();
            DataSet dsTmp = new DataSet();
            dsTmp.Tables.Add(dt);
            List<DictionaryEntry> list = new List<DictionaryEntry>();
            DictionaryEntry dictionaryEntry = new DictionaryEntry("Table", string.Empty);
            list.Add(dictionaryEntry);

            //merge data in list to word table
            document.MailMerge.ExecuteWidthNestedRegion(dsTmp, list);

            //save the result document to pdf
            //document.SaveToFile("Result.docx", FileFormat.Docx2013);
            document.SaveToFile("Result.pdf", FileFormat.PDF);
        }

        public static DataTable GetDataTable()
        {
            DataTable dt = new DataTable();
            dt.TableName = "Table";

            dt.Columns.Add("srno", typeof(string));
            dt.Columns.Add("particulars", typeof(int));
            dt.Columns.Add("finish", typeof(int));
            dt.Columns.Add("thickness", typeof(string));
            dt.Columns.Add("size", typeof(string));
            dt.Columns.Add("chargeable", typeof(int));
            dt.Columns.Add("unit", typeof(int));
            dt.Columns.Add("rateUnit", typeof(string));
            dt.Columns.Add("total", typeof(string));

            DataRow dr1 = dt.NewRow();
            dr1["srno"] = "A";
            dr1["particulars"] = "20";
            dr1["finish"] = "1";
            dr1["thickness"] = "$1000";
            dr1["size"] = "A";
            dr1["chargeable"] = "20";
            dr1["unit"] = "1";
            dr1["rateUnit"] = "$1000";
            dr1["total"] = "A";
            dt.Rows.Add(dr1);

            DataRow dr2 = dt.NewRow();
            dr2["srno"] = "B";
            dr2["particulars"] = "20";
            dr2["finish"] = "1";
            dr2["thickness"] = "$1500";
            dr2["size"] = "B";
            dr2["chargeable"] = "20";
            dr2["unit"] = "1";
            dr2["rateUnit"] = "$1500";
            dr2["total"] = "B";
            dt.Rows.Add(dr2);

            DataRow dr3 = dt.NewRow();
            dr3["srno"] = "C";
            dr3["particulars"] = "20";
            dr3["finish"] = "1";
            dr3["thickness"] = "$1500";
            dr3["size"] = "C";
            dr3["chargeable"] = "20";
            dr3["unit"] = "1";
            dr3["rateUnit"] = "$1500";
            dr3["total"] = "C";
            dt.Rows.Add(dr3);

            return dt;
        }        
    }
}
使用系统集合;
使用System.Collections.Generic;
使用系统数据;
使用Spire.Doc;
名称空间示例
{
班级计划
{
静态void Main(字符串[]参数)
{
文档=新文档();
//加载word文档
document.LoadFromFile(“template.docx”);
//将数据表转换为列表
DataTable dt=GetDataTable();
数据集dsTmp=新数据集();
dsTmp.Tables.Add(dt);
列表=新列表();
DictionaryEntry DictionaryEntry=新DictionaryEntry(“表”,string.Empty);
列表。添加(字典输入);
//将列表中的数据合并到word表
document.MailMerge.ExecuteWidthNestedRegion(dsTmp,列表);
//将结果文档保存为pdf
//document.SaveToFile(“Result.docx”,FileFormat.Docx2013);
保存文件(“Result.pdf”,FileFormat.pdf);
}
公共静态数据表GetDataTable()
{
DataTable dt=新的DataTable();
dt.TableName=“Table”;
dt.Columns.Add(“srno”,typeof(string));
dt.列。添加(“详情”,类型(int));
添加(“完成”,类型(int));
添加(“厚度”,类型(字符串));
添加(“大小”,类型(字符串));
添加(“可收费”,类型(int));
添加(“单位”,类型(int));
添加(“比率单位”,类型(字符串));
添加(“总计”,类型(字符串));
DataRow dr1=dt.NewRow();
dr1[“srno”]=“A”;
dr1[“详情”]=“20”;
dr1[“完成”]=“1”;
dr1[“厚度”]=“1000美元”;
dr1[“大小”]=“A”;
dr1[“可收费”]=“20”;
dr1[“单位”]=“1”;
dr1[“费率单位”]=“1000美元”;
dr1[“总计”]=“A”;
dt.行。添加(dr1);
DataRow dr2=dt.NewRow();
dr2[“srno”]=“B”;
dr2[“详情”]=“20”;
dr2[“完成”]=“1”;
dr2[“厚度”]=“1500美元”;
dr2[“大小”]=“B”;
dr2[“可收费”]=“20”;
dr2[“单位”]=“1”;
dr2[“费率单位”]=“1500美元”;
dr2[“总计”]=“B”;
dt.行。添加(dr2);
DataRow dr3=dt.NewRow();
dr3[“srno”]=“C”;
dr3[“详情”]=“20”;
dr3[“完成”]=“1”;
dr3[“厚度”]=“1500美元”;
dr3[“大小”]=“C”;
dr3[“可收费”]=“20”;
dr3[“单位”]=“1”;
dr3[“费率单位”]=“1500美元”;
dr3[“总计”]=“C”;
dt.行。添加(dr3);
返回dt;
}        
}
}


如果不想使用邮件合并,则需要使用
table.AddRow()将行添加到word表中
,然后将datatable值按循环分配给word table(
table.Rows[i].Cells[j].AddParagation().AppendText(dt.Rows[i][j].ToString();
)。

经过一些努力,我得到了解决方案。您可以在下面的代码中进行检查

        Table table = doc.Sections[0].Tables[0] as Table;

        foreach (var item in Qu.Product)
        {
            ArrayList arrList = new ArrayList();
            arrList.Add(a);
            arrList.Add(item.Parti);
            arrList.Add(item.Fin);
            arrList.Add(item.Thick);
            arrList.Add(item.Size);
            arrList.Add(item.Charge);
            arrList.Add(item.Unit);
            arrList.Add(item.RateUnit);
            arrList.Add(item.Total);

            TableRow Trow = table.AddRow();

            for (int row = 1; row <= 1; row++)
            {
                for (int col = 0; col < 9; col++)
                {
                    Trow.Cells[col].AddParagraph().AppendText(arrList[col].ToString());
                }
            }
            a++;
        }
Table Table=doc.Sections[0]。表[0]为表;
foreach(Qu.Product中的var项目)
{
ArrayList arrList=新的ArrayList();
增列(a);
arrList.Add(项目部分);
arrList.Add(项目Fin);
arrList.Add(item.Thick);
arrList.Add(项目大小);
增加(项目费用);
arrList.Add(项目、单位);
arrList.Add(项目.费率单位);
增加(项目总数);
TableRow Trow=table.AddRow();

谢谢你的建议,但我试了不同的方法。