读取文件列表到datatable

private DataTable datatable;

private DataTable CreateDataSource()
??{
???DataTable dt = new DataTable();
???DataColumn col;

???col=new DataColumn();
???col.DataType=System.Type.GetType("System.Int32");
???col.ColumnName="ID";
???col.ReadOnly=true;
???col.AutoIncrement=true;
???col.AutoIncrementSeed=1;
???col.AutoIncrementStep=1;
???dt.Columns.Add(col);

???col=new DataColumn();
???col.DataType=System.Type.GetType("System.Int32");
???col.ColumnName="ParentID";
???col.ReadOnly=false;
???col.Unique=false;
???col.DefaultValue=int.Parse("0");
???dt.Columns.Add(col);

???dt.Columns.Add("filetype", typeof(int));
???dt.Columns.Add("filename", typeof(string));
???dt.Columns.Add("filesize",typeof(int));
???dt.Columns.Add("LastWriteTime", typeof(DateTime));
???return dt;
??}

public DataTable GetFolder()
??{
???CheckFolder();

???//DataTable dt = CreateDataSource();
???datatable=CreateDataSource();
???DirectoryInfo di=new DirectoryInfo(GetCurDir());
???GetFolder(0,di);
???datatable.AcceptChanges();
???return datatable;
??}

??private void GetFolder(int ParentID,DirectoryInfo dirinfo)
??{
???foreach(DirectoryInfo di in dirinfo.GetDirectories())
???{
????DataRow row;
????row=datatable.NewRow();
????row["ParentID"] = ParentID;
????row["filetype"] = 0; //dir
????row["filename"] = di.Name;
????row["filesize"] = 0;
????row["LastWriteTime"] = di.LastWriteTime;
????datatable.Rows.Add(row);
????int lpid=(int)datatable.Rows[datatable.Rows.Count-1]["ID"]; //获得最后一条记录得ID
????GetFolder(lpid,di);
???}
??}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用NPOI读取大文件Excel到DataTable可以采用流模式(Stream)读取Excel文件,以避免一次性将整个文件读入内存中造成内存不足的问题。以下是使用NPOI流模式读取Excel大文件到DataTable的基本步骤: 1. 使用FileStream打开Excel文件。 2. 使用NPOI的WorkbookFactory创建一个流式的Workbook。 3. 获取Sheet对象。 4. 获取行和单元格对象。 5. 逐行读取数据并将数据添加到DataTable中。 6. 关闭Workbook和FileStream。 以下是示例代码: ``` using System.Data; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; public DataTable ReadExcelToDataTable(string filePath) { var dataTable = new DataTable(); using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { var workbook = WorkbookFactory.Create(stream, ImportOption.All); var sheet = workbook.GetSheetAt(0); var rowCount = sheet.LastRowNum; // 获取列名 var headerRow = sheet.GetRow(0); for (int j = 0; j < headerRow.LastCellNum; j++) { var columnName = headerRow.GetCell(j)?.ToString() ?? $"Column{j + 1}"; if (dataTable.Columns.Contains(columnName)) { columnName += j; } dataTable.Columns.Add(columnName); } // 逐行读取数据 for (int i = 1; i <= rowCount; i++) { var dataRow = dataTable.NewRow(); var row = sheet.GetRow(i); if (row == null) continue; for (int j = 0; j < headerRow.LastCellNum; j++) { var cell = row.GetCell(j); if (cell == null) continue; dataRow[j] = cell.ToString(); } dataTable.Rows.Add(dataRow); } workbook.Close(); } return dataTable; } ``` 在实际应用中,您可以根据实际需求进行修改,例如设置读取的起始行、批量读取等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值