C# DataTable (개발자를 위한 작동 방식 튜토리얼)
C# DataTables에 대한 튜토리얼에 오신 것을 환영합니다. .NET framework에서 제공하는 DataTable은(는) 데이터를 표 형식으로 저장, 조작 및 쿼리할 수 있는 강력한 데이터 구조입니다. 이 튜토리얼에서는 C#에서 DataTables을(를) 생성하고 수정하는 것, 열과 행을 추가하는 것, 데이터를 쿼리하는 것, DataView을 사용하여 필터링 및 정렬하는 기본 사항을 살펴보겠습니다.
이 튜토리얼을 마치면 C# 응용 프로그램에서 DataTables을(를) 사용하는 방법을 잘 이해하게 될 것입니다. 시작해봅시다!
DataTable 생성하기
C#에서 DataTable을(를) 생성하려면 먼저 System.Data 네임스페이스를 가져와야 합니다. 이 네임스페이스에는 데이터 조작과 관련된 다양한 클래스 및 메서드가 포함되어 있으며, DataTable 클래스도 포함됩니다.
using System.Data;
using System.Data;
Imports System.Data
다음으로, DataTable 클래스의 인스턴스를 생성할 수 있습니다. 이 작업을 수행하는 가장 간단한 방법은 기본 생성자를 사용하는 것입니다:
DataTable dt = new DataTable();
DataTable dt = new DataTable();
Dim dt As New DataTable()
문자열 매개변수를 생성자에 전달하여 특정 이름을 가진 DataTable을(를) 생성할 수도 있습니다:
DataTable dt = new DataTable("Employees");
DataTable dt = new DataTable("Employees");
Dim dt As New DataTable("Employees")
DataTable 메서드
열 추가하기
DataTable을 생성한 후, 열을 추가할 수 있습니다. 열을 추가하려면 먼저 DataColumn 클래스의 인스턴스를 생성하고 ColumnName 및 DataType 같은 속성을 설정해야 합니다.
DataTable에 세 개의 열을 추가하는 방법의 예를 보여 드립니다:
DataColumn idColumn = new DataColumn("Id", typeof(int));
DataColumn nameColumn = new DataColumn("Name", typeof(string));
DataColumn ageColumn = new DataColumn("Age", typeof(int));
dt.Columns.Add(idColumn);
dt.Columns.Add(nameColumn);
dt.Columns.Add(ageColumn);
DataColumn idColumn = new DataColumn("Id", typeof(int));
DataColumn nameColumn = new DataColumn("Name", typeof(string));
DataColumn ageColumn = new DataColumn("Age", typeof(int));
dt.Columns.Add(idColumn);
dt.Columns.Add(nameColumn);
dt.Columns.Add(ageColumn);
Dim idColumn As New DataColumn("Id", GetType(Integer))
Dim nameColumn As New DataColumn("Name", GetType(String))
Dim ageColumn As New DataColumn("Age", GetType(Integer))
dt.Columns.Add(idColumn)
dt.Columns.Add(nameColumn)
dt.Columns.Add(ageColumn)
데이터 테이블에 Id 열과 같은 여러 열을 추가할 수 있습니다.
데이터 행 추가하기
열의 정의가 끝나면 DataTable에 대한 행을 추가하기 시작할 수 있습니다. 행을 추가하려면 DataRow 클래스의 새 인스턴스를 생성하고 필드를 필요한 데이터로 채워야 합니다.
다음은 DataTable에 새 행을 추가하는 방법의 예입니다:
DataRow newRow = dt.NewRow();
newRow["Id"] = 1;
newRow["Name"] = "John Doe";
newRow["Age"] = 30;
dt.Rows.Add(newRow);
DataRow newRow = dt.NewRow();
newRow["Id"] = 1;
newRow["Name"] = "John Doe";
newRow["Age"] = 30;
dt.Rows.Add(newRow);
Dim newRow As DataRow = dt.NewRow()
newRow("Id") = 1
newRow("Name") = "John Doe"
newRow("Age") = 30
dt.Rows.Add(newRow)
반복문에서 동일한 메서드를 사용하여 여러 DataTable 행을 한 번에 추가할 수도 있습니다.
for (int i = 1; i <= 3; i++)
{
DataRow row = dt.NewRow();
row["Id"] = i;
row["Name"] = "Employee " + i;
row["Age"] = 20 + i;
dt.Rows.Add(row);
}
for (int i = 1; i <= 3; i++)
{
DataRow row = dt.NewRow();
row["Id"] = i;
row["Name"] = "Employee " + i;
row["Age"] = 20 + i;
dt.Rows.Add(row);
}
For i As Integer = 1 To 3
Dim row As DataRow = dt.NewRow()
row("Id") = i
row("Name") = "Employee " & i
row("Age") = 20 + i
dt.Rows.Add(row)
Next i
위의 코드에서는 세 개의 데이터 행을 추가했습니다.
데이터 접근
DataTable에 저장된 데이터는 Rows 및 Columns 컬렉션을 반복하여 액세스할 수 있습니다. 콘솔에서 DataTable의 내용을 표시하는 방법의 예는 다음과 같습니다:
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
Console.Write(row[col] + "\t");
}
Console.WriteLine();
}
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
Console.Write(row[col] + "\t");
}
Console.WriteLine();
}
Imports Microsoft.VisualBasic
For Each row As DataRow In dt.Rows
For Each col As DataColumn In dt.Columns
Console.Write(row(col) & vbTab)
Next col
Console.WriteLine()
Next row
데이터 수정하기
DataTable의 데이터를 수정하려면 DataRow 개체의 값을 업데이트하면 됩니다. 특정 직원의 나이를 업데이트하는 방법의 예를 보여 드립니다:
var primaryKey = 1;
DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key
if (employeeRow != null)
{
employeeRow["Age"] = 35;
}
var primaryKey = 1;
DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key
if (employeeRow != null)
{
employeeRow["Age"] = 35;
}
Dim primaryKey = 1
Dim employeeRow As DataRow = dt.Rows.Find(primaryKey) ' Find the row with the specified primary key
If employeeRow IsNot Nothing Then
employeeRow("Age") = 35
End If
행 삭제하기
DataTable에서 행을 삭제하려면 DataRow 개체에서 Delete 메서드를 호출해야 합니다:
DataRow employeeRow = dt.Rows.Find(1);
if (employeeRow != null)
{
employeeRow.Delete();
dt.AcceptChanges(); // Commit the deletion
}
DataRow employeeRow = dt.Rows.Find(1);
if (employeeRow != null)
{
employeeRow.Delete();
dt.AcceptChanges(); // Commit the deletion
}
Dim employeeRow As DataRow = dt.Rows.Find(1)
If employeeRow IsNot Nothing Then
employeeRow.Delete()
dt.AcceptChanges() ' Commit the deletion
End If
Delete을 DataRow에 호출하면 해당 행이 삭제될 것으로 표시됩니다. 삭제된 행을 영구적으로 제거하려면 DataTable에서 AcceptChanges 메서드를 호출해야 합니다.
다중 테이블 관리
일부 경우에는 여러 데이터 테이블을 동시에 작업해야 할 수 있습니다. 여러 DataTable 객체를 저장하고 그들 간의 관계를 관리하기 위해 데이터셋 변수를 만들 수 있습니다.
LINQ로 데이터 질의하기
LINQ (Language Integrated Query)는 DataTable 개체를 포함하여 다양한 데이터 소스에서 데이터를 쿼리할 수 있는 C#의 강력한 기능입니다. DataTables과 LINQ를 함께 사용하려면 System.Linq 네임스페이스를 가져와야 합니다. LINQ를 사용하여 25세 이상 직원들을 필터링하는 방법의 예를 보여 드립니다:
using System.Linq;
var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25);
foreach (DataRow row in filteredRows)
{
Console.WriteLine(row["Name"]);
}
using System.Linq;
var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25);
foreach (DataRow row in filteredRows)
{
Console.WriteLine(row["Name"]);
}
Imports System.Linq
Private filteredRows = dt.AsEnumerable().Where(Function(row) row.Field(Of Integer)("Age") > 25)
For Each row As DataRow In filteredRows
Console.WriteLine(row("Name"))
Next row
DataView: 정렬 및 필터링
System.Data 네임스페이스에서 제공하는 또 다른 유용한 클래스인 DataView을 사용하면 DataTable의 정렬되거나 필터링된 뷰를 생성할 수 있습니다. 이는 DataGridView 같은 UI 컨트롤에서 데이터를 표시해야 할 때 특히 유용합니다. 또한, 데이터 바인딩을 통해 DataTable에서 DataGridView 컨트롤로 데이터를 추가할 수도 있습니다.
직원의 나이에 따라 필터링하고 정렬할 DataView를 만드는 예시입니다:
DataView view = new DataView(dt);
// Filter employees older than 25
view.RowFilter = "Age > 25";
// Sort by age in descending order
view.Sort = "Age DESC";
// Display the filtered and sorted data
foreach (DataRowView rowView in view)
{
DataRow row = rowView.Row;
Console.WriteLine(row["Name"]);
}
DataView view = new DataView(dt);
// Filter employees older than 25
view.RowFilter = "Age > 25";
// Sort by age in descending order
view.Sort = "Age DESC";
// Display the filtered and sorted data
foreach (DataRowView rowView in view)
{
DataRow row = rowView.Row;
Console.WriteLine(row["Name"]);
}
Dim view As New DataView(dt)
' Filter employees older than 25
view.RowFilter = "Age > 25"
' Sort by age in descending order
view.Sort = "Age DESC"
' Display the filtered and sorted data
For Each rowView As DataRowView In view
Dim row As DataRow = rowView.Row
Console.WriteLine(row("Name"))
Next rowView
IronPDF를 사용하여 DataTable을 PDF로 내보내기
IronPDF는 사용자 친화적인 PDF 조작 기능이 풍부한 강력한 HTML to PDF 변환기이며, 개발자가 .NET 애플리케이션 내에서 PDF 문서를 생성, 읽기 및 편집할 수 있게 해줍니다.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
이 섹션에서는 IronPDF를 사용하여 DataTable을 PDF 문서로 내보내는 방법을 배울 것입니다.
먼저 IronPDF NuGet 패키지를 설치해야 합니다. Visual Studio에서 패키지 관리자 콘솔을 열고 다음 명령어를 실행하세요:
Install-Package IronPdf
패키지가 설치되면 코드에서 필요한 네임스페이스를 가져오는 것으로 시작할 수 있습니다:
using IronPdf;
using System.IO;
using IronPdf;
using System.IO;
Imports IronPdf
Imports System.IO
다음으로, DataTable을 HTML 테이블로 변환하는 도우미 메서드를 만드세요. IronPDF는 HTML을 사용하여 PDF 문서의 콘텐츠를 렌더링합니다:
public static string ConvertDataTableToHtml(DataTable dt)
{
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>");
htmlBuilder.AppendLine("<tr>");
// Add column headers
foreach (DataColumn col in dt.Columns)
{
htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName);
}
htmlBuilder.AppendLine("</tr>");
// Add rows
foreach (DataRow row in dt.Rows)
{
htmlBuilder.AppendLine("<tr>");
foreach (DataColumn col in dt.Columns)
{
htmlBuilder.AppendFormat("<td>{0}</td>", row[col]);
}
htmlBuilder.AppendLine("</tr>");
}
htmlBuilder.AppendLine("</table>");
return htmlBuilder.ToString();
}
public static string ConvertDataTableToHtml(DataTable dt)
{
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>");
htmlBuilder.AppendLine("<tr>");
// Add column headers
foreach (DataColumn col in dt.Columns)
{
htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName);
}
htmlBuilder.AppendLine("</tr>");
// Add rows
foreach (DataRow row in dt.Rows)
{
htmlBuilder.AppendLine("<tr>");
foreach (DataColumn col in dt.Columns)
{
htmlBuilder.AppendFormat("<td>{0}</td>", row[col]);
}
htmlBuilder.AppendLine("</tr>");
}
htmlBuilder.AppendLine("</table>");
return htmlBuilder.ToString();
}
Public Shared Function ConvertDataTableToHtml(ByVal dt As DataTable) As String
Dim htmlBuilder As New StringBuilder()
htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>")
htmlBuilder.AppendLine("<tr>")
' Add column headers
For Each col As DataColumn In dt.Columns
htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName)
Next col
htmlBuilder.AppendLine("</tr>")
' Add rows
For Each row As DataRow In dt.Rows
htmlBuilder.AppendLine("<tr>")
For Each col As DataColumn In dt.Columns
htmlBuilder.AppendFormat("<td>{0}</td>", row(col))
Next col
htmlBuilder.AppendLine("</tr>")
Next row
htmlBuilder.AppendLine("</table>")
Return htmlBuilder.ToString()
End Function
이제 IronPDF가 제공하는 HtmlToPdf class을 사용하여 HTML 테이블을 렌더링하고 이를 PDF 파일로 저장할 수 있습니다:
public static void ExportDataTableToPdf(DataTable dt, string outputPath)
{
// Convert DataTable to HTML
string htmlTable = ConvertDataTableToHtml(dt);
// Create a new HTML to PDF renderer
var renderer = new ChromePdfRenderer();
// Set global styles for the table
renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print;
renderer.RenderingOptions.FirstPageNumber = 1;
// Render the HTML table as a PDF document
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable);
// Save the PDF file
pdf.SaveAs(outputPath);
}
public static void ExportDataTableToPdf(DataTable dt, string outputPath)
{
// Convert DataTable to HTML
string htmlTable = ConvertDataTableToHtml(dt);
// Create a new HTML to PDF renderer
var renderer = new ChromePdfRenderer();
// Set global styles for the table
renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print;
renderer.RenderingOptions.FirstPageNumber = 1;
// Render the HTML table as a PDF document
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable);
// Save the PDF file
pdf.SaveAs(outputPath);
}
Public Shared Sub ExportDataTableToPdf(ByVal dt As DataTable, ByVal outputPath As String)
' Convert DataTable to HTML
Dim htmlTable As String = ConvertDataTableToHtml(dt)
' Create a new HTML to PDF renderer
Dim renderer = New ChromePdfRenderer()
' Set global styles for the table
renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print
renderer.RenderingOptions.FirstPageNumber = 1
' Render the HTML table as a PDF document
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlTable)
' Save the PDF file
pdf.SaveAs(outputPath)
End Sub
ExportDataTableToPdf 메서드는 HTML 테이블에서 DataTable을 생성하고 이를 PDF 파일로 저장합니다.
마지막으로 적절한 매개변수를 사용하여 DataTable을(를) 내보내기 위해 ExportDataTableToPdf 메서드를 호출하세요:
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
Dim pdfOutputPath As String = "Employees.pdf"
ExportDataTableToPdf(dt, pdfOutputPath)
이렇게 하면 탭 형식으로 된 DataTable의 내용이 포함된 "Employees.pdf"라는 이름의 PDF 파일이 생성됩니다.

결론
이 튜토리얼에서는 C#에서 DataTables의 기본 사항과 IronPDF 라이브러리를 사용하여 DataTable을 PDF 문서로 내보내는 방법을 배웠습니다. 기본 키 열, 데이터셋 변수 및 필터링과 정렬을 위한 DataView를 포함함으로써 데이터에 대해 더 큰 제어와 유연성을 가질 수 있습니다. 이제 C# 애플리케이션에서 전문적인 모양의 PDF 보고서를 생성하기 위해 DataTables와 IronPDF를 함께 사용하는 방법에 대한 좋은 이해를 가지고 있어야 합니다.
IronPDF는 기능을 무료로 체험할 수 있는 체험판을 제공하며 구매를 결정하기 전에 능력을 탐색할 수 있습니다.
자주 묻는 질문
C#에서 DataTable이란?
.NET Framework에서 DataTable은 개발자가 데이터 저장, 조작, 쿼리를 표 형식으로 다룰 수 있는 다재다능한 데이터 구조로, 응용 프로그램에서 구조화된 데이터를 처리하는 데 필수적입니다.
C#에서 DataTable을 PDF 문서로 변환할 수 있는 방법은 무엇인가요?
C#에서 DataTable을 PDF 문서로 변환하려면 먼저 DataTable을 HTML 테이블로 변환해야 합니다. 그런 다음 IronPDF의 HtmlToPdf 클래스를 사용하여 해당 HTML을 PDF 문서로 렌더링하고 생성된 파일을 저장합니다.
C#에서 DataTable을 어떻게 생성하나요?
C#에서 DataTable을 생성하려면 System.Data 네임스페이스를 가져오고 DataTable 클래스를 생성자의 특정 이름을 선택적으로 제공하여 인스턴스화합니다.
DataTable에 열을 추가하는 단계는 무엇인가요?
DataTable에 열을 추가하려면 DataColumn 클래스의 인스턴스를 생성하고, ColumnName 및 DataType과 같은 속성을 구성한 다음, DataTable의 Columns 컬렉션에 추가합니다.
보고 목적을 위해 DataTable에서 데이터를 PDF로 내보내는 방법은 무엇인가요?
Table을 HTML 테이블 형식으로 변환한 후 IronPDF를 사용하여 이 HTML을 PDF 문서로 렌더링하여 전문 보고서를 생성할 수 있습니다.
C#에서 DataTable에 행을 추가하는 방법은 무엇인가요?
C#에서 DataTable에 행을 추가하려면 새로운 DataRow 인스턴스를 만들고 데이터로 채운 다음 DataTable의 Rows 컬렉션에 추가합니다. 이 프로세스는 루프를 사용하여 여러 행에도 반복할 수 있습니다.
LINQ란 무엇이며 DataTable과 함께 어떻게 사용될 수 있나요?
LINQ (Language Integrated Query)는 C#에서 필터링, 정렬 및 데이터 조작을 다양한 소스에서 포함하여 DataTables에서 지원하여 데이터 작업을 단순화하는 강력한 쿼리 도구입니다.
DataView를 사용하여 DataTable을 필터링 및 정렬하는 방법은 무엇인가요?
DataView는 DataTable의 필터링되거나 정렬된 보기 생성을 위한 편리한 방법입니다. RowFilter 및 Sort 속성을 설정하여 데이터가 표시되는 방식을 제어할 수 있으며, 이는 UI 구성 요소에서 특히 유용합니다.
DataTables를 PDF로 내보내기 위해 필요한 라이브러리를 어떻게 설치하나요?
DataTables를 PDF로 내보내기 위해 필요한 IronPDF 라이브러리를 설치하려면 Visual Studio의 패키지 관리자 콘솔을 사용하고 다음 명령을 실행하세요: Install-Package IronPdf.




