Удалить строки с заданным текстом в таблице с помощью C


Основываясь на вопросах наших клиентов.

В этой статье вы узнаете, как еще работать с таблицами. Например, у нас есть документ с таблицей, содержащей разных людей разного возраста. Третья ячейка в каждой строке содержит дату рождения человека. Вам нужно создать новый документ с таблицей, которая будет содержать список только пожилых людей в возрасте 90 лет и старше.

    Требуется следующее:
  • Загрузите документ с таблицей.
  • Найдите первую таблицу в документе.
  • Выполните петлю по всем рядам, начиная с конца.
  • Возьмите 3-ю ячейку с датой рождения.
  • Рассчитайте возраст человека.
  • Удалите строку, если в ней нет долгожителя.
  • Сохраните документ как новый PDF-документ.

В следующем примере кода показано, как это сделать.


         public static void FindTextFromTable()
        {
            int longLiverMinYears = 90;

            string inpFile = @"..\..\example.docx";
            string outFile = Path.ChangeExtension(inpFile, ".pdf");

            // Load a document with a table containing various persons with different age.
            DocumentCore dc = DocumentCore.Load(inpFile);

            // Find a first table in the document.
            Table table = (Table)dc.GetChildElements(true, ElementType.Table).First();

            // Loop by the all rows from the end.
            // Find long-livers.
            bool isLongLiver = false;

            for (int r = table.Rows.Count - 1; r > 0; r--)
            {
                isLongLiver = false;

                // Take the 3rd cell with the birth date.
                TableCell tc = table.Rows[r].Cells[2];

                // Get the birth date.
                DateTime birthDate = DateTime.Now;
                if (DateTime.TryParse(tc.Content.ToString(), CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.None, out birthDate))
                {
                    // Get the person age.
                    // Remove the row if the person isn't long-liver.
                    if (CalculateAge(birthDate) >= longLiverMinYears)
                        isLongLiver = true;
                }
                // Remove the row if it doesn't contain a long-liver.
                if (!isLongLiver)
                    table.Rows.RemoveAt(r);
            }

            // Save the document as PDF.
            dc.Save(outFile, new PdfSaveOptions());

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(outFile) { UseShellExecute = true });
        }
        private static int CalculateAge(DateTime dateOfBirth)
        {
            int age = 0;
            age = DateTime.Now.Year - dateOfBirth.Year;
            if (DateTime.Now.DayOfYear < dateOfBirth.DayOfYear)
                age = age - 1;
            return age;
        }
                    

As a result:

Remove rows with a given text in a table

The complete code example see: www.sautinsoft.com/from-customers-find-text-from-table-net-csharp-vb.php


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.com или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.