Shared/Kernelx.Excel2NPOI/NPOI/ExeclCmpter.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
#if NET35
using Kernelx.ComponentModel.DataAnnotations;
#endif
#if NETSTANDARD2_0
using System.ComponentModel.DataAnnotations;
#endif
namespace Kernelx.Contexts.NPOI
{
public class ExeclCmpter : IExeclCmpter
{
public DataSet ReadExeclFileStream(Stream stream, bool isXlsx, bool hasHeaderow)
{
IWorkbook workbook = isXlsx ? new XSSFWorkbook(stream) as IWorkbook : new HSSFWorkbook(stream);
var items = workbook.GetEnumerator();
var ds = new DataSet();
while (items.MoveNext())
{
ISheet sheet = items.Current as ISheet;
ds.Tables.Add(_Generate(sheet, hasHeaderow));
}
return ds;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE1006:命名样式", Justification = "<挂起>")]
private static DataTable _Generate(ISheet sheet, bool hasHeaderow)
{
var dt = new DataTable(sheet.SheetName);
var firstrow = sheet.GetRow(0);
var colCount = firstrow.LastCellNum;
for (var i = 0; i < colCount; i++)
{
var colName = firstrow.GetCell(i)?.ToString();
//没有行头或者空值时,使用默认头
if (!hasHeaderow || string.IsNullOrEmpty(colName))
colName = $"column_{i}";
dt.Columns.Add(new DataColumn(colName));
}
for (var i = (hasHeaderow ? 1 : 0); i <= sheet.LastRowNum; i++)
{
var row = sheet.GetRow(i);
if (row == null || row.Cells.All(d => d.CellType == CellType.Blank)) continue;
var rd = dt.NewRow();
for (var ci = 0; ci < colCount; ci++)
后面还有 87 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
