Как добавить несколько строк и как заменить значение в шпиле Do c с помощью c#? - PullRequest
0 голосов
/ 14 марта 2020

У меня есть файл do c, и я хочу заменить строковые значения в таблице, а также добавить строку в файл do c и преобразовать его в PDF. Пример. У меня есть 5 записей в таблице данных, затем добавить 5 строк с записями в существующем шпиле сделать c и заменить значения. Пожалуйста, проверьте прикрепленное фото файла do c. enter image description here

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

После некоторых усилий я получаю решение. Вы можете проверить это ниже кода.

        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++;
        }
0 голосов
/ 18 марта 2020

Я бы посоветовал вам использовать слияние по почте, что было бы намного проще.

Сначала измените ваш шаблон документа Word, вставив поля слияния, как показано ниже:

enter image description here

Во-вторых, обратитесь к приведенному ниже примеру кода для объединения данных в таблицу данных с таблицей слов:

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;
        }        
    }
}

enter image description here

Если вы не хотите использовать слияние по почте, вам нужно добавить строки в таблицу слов с помощью table.AddRow();, а затем присвоить значение данных таблице слов с помощью l oop (table.Rows[i].Cells[j].AddParagraph().AppendText(dt.Rows[i][j].ToString());).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...