반응형
NPOI를 사용하여 새 .xlsx 파일을 만들고 쓰는 중입니다.
편집:
엑셀 스프레드시트의 행을 읽고, 행을 해석하고, 필드 데이터를 새로운 엑셀 파일에 쓰는 작은 콘솔 애플리케이션을 작성하려고 합니다.사용하고 있습니다.NET 및 NPOI 라이브러리.저는 마침내 아파치 사이트에서 POI에 대한 Java 문서를 찾았습니다.여기 새로운 오류가 있는 업데이트된 코드가 있습니다.
이렇게 하면 세 번째 열에 텍스트만 쓴다는 점을 제외하고 실제로 읽을 수 있는 파일이 생성됩니다.
public static void TransferXLToTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("City", typeof(string));
dt.Columns.Add("State", typeof(string));
dt.Columns.Add("Zip", typeof(string));
using (FileStream stream = new FileStream(OpenFile(), FileMode.Open, FileAccess.Read))
{
IWorkbook wb = new XSSFWorkbook(stream);
ISheet sheet = wb.GetSheet("Sheet1");
string holder;
int i = 0;
do
{
DataRow dr = dt.NewRow();
IRow row = sheet.GetRow(i);
try
{
holder = row.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString();
}
catch (Exception)
{
break;
}
string city = holder.Substring(0, holder.IndexOf(','));
string state = holder.Substring(holder.IndexOf(',') + 2, 2);
string zip = holder.Substring(holder.IndexOf(',') + 5, 5);
dr[0] = city;
dr[1] = state;
dr[2] = zip;
dt.Rows.Add(dr);
i++;
} while (!String.IsNullOrEmpty(holder));
}
using (FileStream stream = new FileStream(@"C:\Working\FieldedAddresses.xlsx", FileMode.Create, FileAccess.Write))
{
IWorkbook wb = new XSSFWorkbook();
ISheet sheet = wb.CreateSheet("Sheet1");
ICreationHelper cH = wb.GetCreationHelper();
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < 3; j++)
{
IRow row = sheet.CreateRow(i);
ICell cell = row.CreateCell(j);
cell.SetCellValue(cH.CreateRichTextString(dt.Rows[i].ItemArray[j].ToString()));
}
}
wb.Write(stream);
}
}
뭐가 잘못됐는지 알아냈어실제로는 매우 단순한 실수였습니다.외부 루프에 행을 작성해야 할 때 안쪽 가장자리에 새 행을 작성했습니다.NPOI의 시작점을 필요로 하는 모든 사람에게 답변의 작업 코드가 유용하기를 바랍니다.
이 웹 사이트는 POI 또는 NPOI로 시작하는 모든 사용자에게 매우 유용한 리소스입니다.
http://poi.apache.org/spreadsheet/quick-guide.html#NewWorkbook
여기 작업 코드가 있습니다.
public static void TransferXLToTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("City", typeof(string));
dt.Columns.Add("State", typeof(string));
dt.Columns.Add("Zip", typeof(string));
using (FileStream stream = new FileStream(OpenFile(), FileMode.Open, FileAccess.Read))
{
IWorkbook wb = new XSSFWorkbook(stream);
ISheet sheet = wb.GetSheet("Sheet1");
string holder;
int i = 0;
do
{
DataRow dr = dt.NewRow();
IRow row = sheet.GetRow(i);
try
{
holder = row.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString();
}
catch (Exception)
{
break;
}
string city = holder.Substring(0, holder.IndexOf(','));
string state = holder.Substring(holder.IndexOf(',') + 2, 2);
string zip = holder.Substring(holder.IndexOf(',') + 5, 5);
dr[0] = city;
dr[1] = state;
dr[2] = zip;
dt.Rows.Add(dr);
i++;
} while (!String.IsNullOrEmpty(holder));
}
using (FileStream stream = new FileStream(@"C:\Working\FieldedAddresses.xlsx", FileMode.Create, FileAccess.Write))
{
IWorkbook wb = new XSSFWorkbook();
ISheet sheet = wb.CreateSheet("Sheet1");
ICreationHelper cH = wb.GetCreationHelper();
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow row = sheet.CreateRow(i);
for (int j = 0; j < 3; j++)
{
ICell cell = row.CreateCell(j);
cell.SetCellValue(cH.CreateRichTextString(dt.Rows[i].ItemArray[j].ToString()));
}
}
wb.Write(stream);
}
}
언급URL : https://stackoverflow.com/questions/19838743/trying-to-create-a-new-xlsx-file-using-npoi-and-write-to-it
반응형
'programing' 카테고리의 다른 글
명령줄 인수를 사용하여 C#에서 PowerShell 스크립트 실행 (0) | 2023.04.16 |
---|---|
요소를 플렉스박스로 하부에 정렬 (0) | 2023.04.16 |
오류:[ Column Name ]및 [Column Name]을 클릭합니다.ColumnName에 충돌하는 속성이 있습니다. DataType 속성 불일치 (0) | 2023.04.16 |
리모트 Git 브랜치를 체크하려면 어떻게 해야 하나요? (0) | 2023.04.16 |
배열을 인수로 Bash 함수에 전달하는 방법 (0) | 2023.04.16 |