현대 기업 환경에서는 데이터를 효율적으로 집계하고 이를 기반으로 한 보고서를 작성하는 것이 매우 중요합니다. 본 글에서는 C#과 오라클 프로시저를 사용해 보고서 생성 시스템을 개발하는 방법을 자세히 설명합니다. 이 시스템은 데이터 집계를 위한 프로시저 작성, C#을 이용한 PDF 및 Excel 보고서 생성 등으로 구성됩니다.
1. 시스템 아키텍처
보고서 생성 시스템은 다음과 같은 주요 구성 요소로 이루어져 있습니다:
- 데이터베이스: 오라클 데이터베이스를 사용하여 모든 데이터를 저장합니다.
- 프로그래밍 언어: C#을 사용하여 애플리케이션 로직과 보고서를 생성하는 부분을 구현합니다.
- 보고서 생성 라이브러리: PDF 및 Excel 파일 생성에 필요한 라이브러리인 iTextSharp 및 EPPlus를 사용합니다.
2. 데이터 집계 프로시저 작성
업무에 필요한 데이터를 집계하는 오라클 프로시저를 작성하는 것이 첫 번째 단계입니다. 아래는 예제 프로시저입니다:
CREATE OR REPLACE PROCEDURE generate_sales_report (
start_date IN DATE,
end_date IN DATE,
out_cursor OUT SYS_REFCURSOR
) AS
BEGIN
OPEN out_cursor FOR
SELECT product_name, SUM(sales_amount) AS total_sales
FROM sales
WHERE sales_date BETWEEN start_date AND end_date
GROUP BY product_name
ORDER BY total_sales DESC;
END;
위 프로시저는 판매일자 범위를 입력받아 해당 범위의 판매 데이터 집계를 수행합니다. 이를 통해 각 제품별 총 판매액을 구하는 쿼리를 실행합니다.
3. C#을 이용한 오라클 프로시저 호출
이제 C# 애플리케이션에서 위에서 만든 오라클 프로시저를 호출해 보겠습니다. 이를 위해 Oracle.ManagedDataAccess.Client 라이브러리를 사용할 것입니다:
using Oracle.ManagedDataAccess.Client;
string connectionString = "User Id=your_userid;Password=your_password;Data Source=your_datasource;";
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
using (OracleCommand command = new OracleCommand("generate_sales_report", connection))
{
command.CommandType = CommandType.StoredProcedure;
OracleParameter startDate = new OracleParameter("start_date", OracleDbType.Date);
startDate.Value = new DateTime(2023, 1, 1);
command.Parameters.Add(startDate);
OracleParameter endDate = new OracleParameter("end_date", OracleDbType.Date);
endDate.Value = new DateTime(2023, 12, 31);
command.Parameters.Add(endDate);
OracleParameter outCursor = new OracleParameter("out_cursor", OracleDbType.RefCursor);
command.Parameters.Add(outCursor);
using (OracleDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["product_name"]}: {reader["total_sales"]}");
}
}
}
}
위 코드는 C#에서 오라클 프로시저를 호출하는 방법을 보여줍니다. 지정한 날짜 사이의 판매 데이터를 집계하여 결과를 출력합니다.
4. PDF 및 Excel 보고서 생성
이제 집계된 데이터를 기반으로 PDF 및 Excel 보고서를 생성하는 방법을 살펴보겠습니다. 먼저, PDF 보고서 생성을 위한 iTextSharp 라이브러리를 사용해 보겠습니다:
using iTextSharp.text;
using iTextSharp.text.pdf;
public void CreatePdfReport(string filename, DataTable data)
{
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create));
document.Open();
document.Add(new Phrase("Sales Report"));
PdfPTable table = new PdfPTable(data.Columns.Count);
foreach (DataColumn column in data.Columns)
{
table.AddCell(new Phrase(column.ColumnName));
}
foreach (DataRow row in data.Rows)
{
foreach (var item in row.ItemArray)
{
table.AddCell(new Phrase(item.ToString()));
}
}
document.Add(table);
document.Close();
}
위 코드는 DataTable 형식의 데이터를 기반으로 PDF 보고서를 생성하는 방법을 보여줍니다. iTextSharp를 사용하여 문서와 테이블을 만들고 최종적으로 파일로 저장합니다.
5. Excel 보고서 생성
다음으로, EPPlus 라이브러리를 사용하여 Excel 보고서를 생성하는 방법을 살펴보겠습니다:
using OfficeOpenXml;
public void CreateExcelReport(string filename, DataTable data)
{
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sales Report");
for (int i = 0; i < data.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = data.Columns[i].ColumnName;
}
for (int i = 0; i < data.Rows.Count; i++)
{
for (int j = 0; j < data.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1].Value = data.Rows[i][j];
}
}
File.WriteAllBytes(filename, package.GetAsByteArray());
}
위 코드는 DataTable 형식의 데이터를 기반으로 Excel 보고서를 생성하는 방법을 보여줍니다. EPPlus 라이브러리를 사용하여 Excel 문서를 만들고 데이터를 입력한 뒤 파일로 저장합니다.
6. 요약 및 결론
본 글에서는 C#과 오라클 프로시저를 이용한 보고서 생성 시스템을 개발하는 방법에 대해 설명했습니다. 데이터 집계 프로시저 작성, C#을 이용한 오라클 프로시저 호출, PDF 및 Excel 보고서 생성에 대한 예정을 살펴보았습니다. 이러한 시스템은 기업의 데이터 분석과 보고서 작성을 보다 효율적으로 만들어 줄 것입니다. 이를 통해 기업은 더욱 신속하게 의사결정을 내릴 수 있으며, 비즈니스 운영의 효율성을 극대화할 수 있습니다.
앞으로 이 시스템을 활용하여 다양한 보고서를 생성하고, 이를 기반으로 비즈니스 상황에 맞춘 전략을 마련하는 것이 중요합니다. 데이터에 기반한 의사결정이 이루어질수록, 기업은 더욱 경쟁력 향상에 기여할 것입니다. 여러분의 개발 여정에 도움이 되기를 바랍니다!