In this code example, we will find elderly people aged 90 and older from the list, and delete the remaining rows.
Download the resulting file: result - long-livers.pdf
Complete code
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using SautinSoft.Document;
using SautinSoft.Document.Tables;
namespace Sample
{
class Program
{
static void Main(string[] args)
{
FindTextFromTable();
}
/// <summary>
/// How to remove the rows with the specified text from a table.
/// </summary>
/// <remarks>
/// Details: https://sautinsoft.com/products/document/help/net/developer-guide/from-customers-find-text-from-table-net-csharp-vb.php
/// </remarks>
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;
}
}
}
Imports System
Imports System.Globalization
Imports System.IO
Imports System.Linq
Imports SautinSoft.Document
Imports SautinSoft.Document.Tables
Namespace Sample
Friend Class Program
Shared Sub Main(ByVal args() As String)
FindTextFromTable()
End Sub
''' <summary>
''' How to remove the rows with the specified text from a table.
''' </summary>
''' <remarks>
''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/from-customers-find-text-from-table-net-csharp-vb.php
''' </remarks>
Public Shared Sub FindTextFromTable()
Dim longLiverMinYears As Integer = 90
Dim inpFile As String = "..\..\..\example.docx"
Dim outFile As String = Path.ChangeExtension(inpFile, ".pdf")
' Load a document with a table containing various persons with different age.
Dim dc As DocumentCore = DocumentCore.Load(inpFile)
' Find a first table in the document.
Dim table As Table = CType(dc.GetChildElements(True, ElementType.Table).First(), Table)
' Loop by the all rows from the end.
' Find long-livers.
Dim isLongLiver As Boolean = False
For r As Integer = table.Rows.Count - 1 To 1 Step -1
isLongLiver = False
' Take the 3rd cell with the birth date.
Dim tc As TableCell = table.Rows(r).Cells(2)
' Get the birth date.
Dim birthDate As Date = Date.Now
If Date.TryParse(tc.Content.ToString(), CultureInfo.CreateSpecificCulture("en-US"), DateTimeStyles.None, birthDate) Then
' Get the person age.
' Remove the row if the person isn't long-liver.
If CalculateAge(birthDate) >= longLiverMinYears Then
isLongLiver = True
End If
End If
' Remove the row if it doesn't contain a long-liver.
If Not isLongLiver Then
table.Rows.RemoveAt(r)
End If
Next 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) With {.UseShellExecute = True})
End Sub
Private Shared Function CalculateAge(ByVal dateOfBirth As Date) As Integer
Dim age As Integer = 0
age = Date.Now.Year - dateOfBirth.Year
If Date.Now.DayOfYear < dateOfBirth.DayOfYear Then
age = age - 1
End If
Return age
End Function
End Class
End Namespace
If you need a new code example or have a question: email us at support@sautinsoft.com or ask at Online Chat (right-bottom corner of this page) or use the Form below: