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)
{
// Get your free 30-day key here:
// https://sautinsoft.com/start-for-free/
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
''' Get your free 30-day key here:
''' https://sautinsoft.com/start-for-free/
''' <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: