Excel 통합 문서에서 시트를 읽고 목록을 채우는 데 사용하는 코드가 있습니다.Excel 통합 문서의 시트를 목록에 삽입하는 더 좋은 방법이 있습니까?
2 차원 배열에 배치 한 다음 주기로 이동하고 목록을 채우는 범위가 생깁니다.
제 질문은 동일한 결과를 얻는 더 좋은 방법이 있습니까? 코드가 적게 들고 빠릅니다. 4 장에 대해이 작업을 수행해야하며 260ms가 걸립니다.
public static void LoadDdrDataIntoObjects(ref List<Receivables> recList, ref List<Dilution> dilList, ref List<Accountable> accList, ref List<Outstanding> outList, string sheet)
{
Workbook pantaReiWorkBook = PantaReiApplication.ActiveWorkbook;
Sheets pantaReiWorkSheets = pantaReiWorkBook.Sheets;
Worksheet pantaReiWorkSheet = pantaReiWorkSheets[sheet];
Range pantaReiLastCell =
pantaReiWorkSheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell);
Range pantaReiRange =
pantaReiWorkSheet.Range["A1:" + pantaReiLastCell.Address.Trim(new char['$']), Type.Missing];
object[,] pantaReidataRange = (object[,]) pantaReiRange.Value[Type.Missing];
for (var row = 2; row <= pantaReidataRange.GetLength(0); row++)
{
Receivables pantaReiReceivable = new Receivables
{
FileID = fileID.ID,
SheetType =
pantaReidataRange[row, 1].ToString(),
SellerCompany =
pantaReidataRange[row, 2].ToString(),
Contract = pantaReidataRange[row, 3].ToString(),
DebitID = pantaReidataRange[row, 4].ToString(),
CompanyCode =
pantaReidataRange[row, 5].ToString(),
NoteNumber =
pantaReidataRange[row, 6].ToString(),
Installment =
Convert.ToInt32(pantaReidataRange[row, 7]),
InvoiceDate =
(DateTime) pantaReidataRange[row, 8],
DueDate1 = (DateTime) pantaReidataRange[row, 9],
DueDate2 =
(DateTime) pantaReidataRange[row, 10],
DueDate3 =
(DateTime) pantaReidataRange[row, 11],
Currency =
pantaReidataRange[row, 12].ToString(),
Amount =
(float)
Convert.ToDouble(pantaReidataRange[row, 13]),
Sign = pantaReidataRange[row, 14].ToString(),
ProductType =
pantaReidataRange[row, 15].ToString(),
DilutionType =
Convert.ToString(pantaReidataRange[row, 16]),
MaturityStatus =
Convert.ToInt32(pantaReidataRange[row, 17]),
DebitStatus =
pantaReidataRange[row, 18].ToString(),
DealerFlag =
pantaReidataRange[row, 19].ToString(),
CustomerDescription =
pantaReidataRange[row, 20].ToString(),
AssetType =
Convert.ToInt32(pantaReidataRange[row, 21])
};
recList.Add(pantaReiReceivable);
}
}