NPOI를 사용하여 Excel로 DataTable 가져오기
Excel은 일반적으로 두 가지 형식이 있는데 그것이 바로 xls와 xlsx이다. NPOI에서도 각각 이 두 가지 형식이 있는데 지금은 NPOI 2.2.0으로 겨냥하고 있다.NET 4.0의 버전을 예로 들 수 있습니다.
1. 우선 좋은 NPOI를 다운로드할 것입니다.NET 4.0의 dll을 참조에 추가합니다.
2. xls와 xlsx를 호환하기 위해 필요한 것을 제외한다.Net Program 참조 세트는 NPOI 참조 세트를 참조해야 합니다.
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
3. 직접 생성하는 방법
///
/// Excel
///
///
///
///
/// DataTable
///
public bool SaveXLS(String filePath,string filename,string filetype, DataTable dt)
{
try
{
if (filetype.ToLower() == ".xls")
{
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
int count = 0;
HSSFWorkbook wb = new HSSFWorkbook();
ISheet sh = wb.CreateSheet("TABLENAME");
for (int i = 0; i < dt.Columns.Count; i++)
{
HSSFRow row = (HSSFRow)sh.CreateRow(0);
for (int j = 0; j < dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(dt.Columns[j].ColumnName);
}
count = 1;
}
for (int i = 0; i < dt.Rows.Count; ++i)
{
HSSFRow row = (HSSFRow)sh.CreateRow(count);
for (int j = 0; j < dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
}
++count;
}
using (FileStream stm = File.OpenWrite(filePath + filename))
{
wb.Write(stm);
}
return true;
}
if (filetype.ToLower() == ".xlsx")
{
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
int count = 0;
XSSFWorkbook wb = new XSSFWorkbook();
ISheet sh = wb.CreateSheet("TABLENAME");
for (int i = 0; i < dt.Columns.Count; i++)
{
XSSFRow row = (XSSFRow)sh.CreateRow(0);
for (int j = 0; j < dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(dt.Columns[j].ColumnName);
}
count = 1;
}
for (int i = 0; i < dt.Rows.Count; ++i)
{
XSSFRow row = (XSSFRow)sh.CreateRow(count);
for (int j = 0; j < dt.Columns.Count; ++j)
{
row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
}
++count;
}
using (FileStream stm = File.OpenWrite(filePath + filename))
{
wb.Write(stm);
}
return true;
}
}
catch (Exception ex)
{
string path = System.Environment.CurrentDirectory + "\\" + System.DateTime.Now.ToString("yyyyMMdd") + "_ABOS.log";
SaveLog(path,System.DateTime.Now.ToString() + " --> :"+ex.ToString());
return false;
}
}
4. 위의 방법에서 SaveLog는 내가 Log 기록을 저장하는 방법으로 삭제할 수 있다. 이렇게 하면 간단한 Excel을 생성할 수 있다. 만약에 격식, 예를 들어 칸의 중앙, 배경색 등을 추가해야 한다면 NPOI의 다른 방법을 사용해야 한다.
참고: 생성된 Excel은 열 때 "읽을 수 없는 내용"과 같은 오류를 자주 보고합니다. 기본적으로 생성된 후에 코드로 다른 작업을 해서 Dispose () 를 잊어버려서 두 번째 생성할 때 파일 내용이 손상됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.