Aspose------导入Excel
代码:
public List<T> ImportExcelToList<T>()
{
HttpContext context = HttpContext.Current;
if (context.Request.Files.AllKeys.Length > )
{
var key = context.Request.Files.AllKeys[];
var file = context.Request.Files[key];
var folderName = Path.GetFileNameWithoutExtension(file.FileName);
var fileExtension = Path.GetExtension(file.FileName); Workbook book = new Workbook(file.InputStream);
Worksheet sheet = book.Worksheets[]; Cells cells = sheet.Cells;
var da = cells[, ].Value;
var dataTable = cells.ExportDataTable(, , cells.MaxDataRow + , cells.MaxColumn, true);
var datalist = GetList<T>(dataTable); //拆分单元格后需要给Component为空的单元格赋值
Type type = typeof(T);
PropertyInfo[] property = type.GetProperties();
for (var i = ; i < datalist.Count(); i++)
{
var li = datalist[i];
foreach (var pi in property)
{
if (pi.Name == "Component")
{
var value = pi.GetValue(li);
if (value == null)
{ var v = pi.GetValue(datalist[i - ]);
pi.SetValue(li, v);
}
}
}
}
return datalist;
}
return null;
} public List<T> GetList<T>(DataTable table)
{
List<T> list = new List<T>();
T t = default(T);
PropertyInfo[] propertypes = null;
string tempName = string.Empty;
foreach (DataRow row in table.Rows)
{
t = Activator.CreateInstance<T>();
propertypes = t.GetType().GetProperties();
foreach (PropertyInfo pro in propertypes)
{
tempName = pro.Name;
if (table.Columns.Contains(tempName))
{
object value = row[tempName];
if (!value.ToString().Equals(""))
{
if (pro.Name == "NewDuct" || pro.Name == "ExistingDuct" || pro.Name == "NewAerial" || pro.Name == "ExistingAerial")
{
var v = ChangePropertyType(pro.PropertyType,value);
pro.SetValue(t, v, null);
continue;
}
pro.SetValue(t, value, null);
}
}
}
list.Add(t);
}
return list.Count == ? null : list;
} private object ChangePropertyType(Type type, object value)
{
object data;
if (type.FullName.ToLower().Contains("decimal"))
{
data = ;
data = Convert.ToDecimal(value);
}
else
{
data = "";
data = Convert.ToString(value);
}
return data;
}
转成树结构
private List<ProjectItem> AddItemToTree(List<MergeItem> list)
{
var datalist = new List<ProjectItem>();
var component = "";
PropertyInfo[] property = typeof(MergeItem).GetProperties(); foreach (var li in list)
{
var item = new ProjectItem(); if (string.IsNullOrEmpty(li.SubComponent))
{
component = li.Component;
item.SubComponent = null;
item.ItemLevel = "Level1";
item.Unit = null;
}
else
{
item.SubComponent = li.Component;
item.ItemLevel = "Level2";
item.Unit = null; //建第三级
foreach (var pi in property)
{
var scenario = "";
if (pi.Name == "NewDuct")
{
scenario = "New Duct";
}
else if (pi.Name == "ExistingDuct")
{
scenario = "Existing Duct";
}
else if (pi.Name == "NewAerial")
{
scenario = "New Aerial";
}
else if (pi.Name == "ExistingAerial")
{
scenario = "Existing Aerial";
}
else {
continue;
} var value = pi.GetValue(li);
if (value != null)
{
var child = new ProjectItem();
child.Component = component;
child.SubComponent = item.SubComponent;
child.Description = li.SubComponent;
child.Unit = li.Unit;
child.Scenario = scenario;
child.UnitCost = Convert.ToDecimal(value);
child.Remark = li.Remark;
child.FillInstruct = li.FillInstruct;
child.ItemLevel = "Level3";
datalist.Add(child);
}
}
} item.Component = component;
item.Description = li.Component;
item.Scenario = null;
item.UnitCost = null;
item.Remark = null;
item.FillInstruct = null; var isExist = datalist.Any(p => p.Component == item.Component && p.SubComponent == item.SubComponent &&
p.Description == item.Description && p.ItemLevel == "Level2");
if (!isExist)
{
datalist.Add(item);
}
} return datalist;
}
Aspose------导入Excel的更多相关文章
- 利用Aspose.Cell控件导入Excel非强类型的数据
导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...
- 基于 Aspose.Cells与XML导入excel 数据----操作类封装
前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...
- C# Aspose.Cells方式导入Excel文件
读取Excel 类 我返回的是DataTable 类型 也可以返回DataSet类型 public class XlsFileHelper { public DataTable ImportExcel ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 批量导入Excel存在的问题及解决方案
许多传统的做法,导入excel就是将excel上传到服务器的某个文件夹里如upload,之后再次读取,导入系统.这边就存在一些问题: 1.服务器需要安装Office,用于读取Excel文件. 2.系统 ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- C#导出和导入Excel模板功能
引用 Aspose.Cells; 基于WinForm 导入 private void btn_excel_input_Click(object sender, EventArgs e) { try ...
- 一步步实现ABAP后台导入EXCEL到数据库【3】
在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...
- IE8下导入EXCEL数据传到客户端以附件下载
IE8下导入EXCEL数据传到客户端以附件下载方式出现,而不显示数据,解决方法:以text/html格式返回. HttpResponseMessage message = new HttpRespon ...
随机推荐
- Class类文件结构
平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现.不仅使用Java编译器可以把Java代码编译成存储字节码的Cla ...
- Android Studio 学习笔记(1)
最近从Eclipse转到Android Studio IDE,很多东西需要学习,本文是个记录. 项目结构 在Anroid Studio 中,一个Project 包括多个Module,每个Module下 ...
- 移动端 图片切换 轮播(banner)
发现一个很好用的jquery控件 操作很简单 1.引入css <link href="/Resources/style/swiper.min.css" rel="s ...
- css3常用动画样式文件move.css
move.css zoomIn zoomInDownouter-circlearrowTop expandOpen fadeIn fadeInNormal fadeInUp fadeInRi ...
- String直接赋值和使用new的区别
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能创建一个 ...
- 关于Unity中旧版动画系统的使用
Unity在5.X以后,有一个旧版的动画系统和新版的动画系统. 新版的动画系统是使用Unity动画编辑器来调的,调动画和控制动画 旧版的动画系统是用其他的第三方软件调好后导出到一个FBX文件里面,就是 ...
- QMDP-Net: Deep Learning for Planning under Partial Observability
一篇用deep neural network做POMDP的论文
- Rethinking the inception architecture for computer vision的 paper 相关知识
这一篇论文很不错,也很有价值;它重新思考了googLeNet的网络结构--Inception architecture,在此基础上提出了新的改进方法; 文章的一个主导目的就是:充分有效地利用compu ...
- Going deeper with convolutions 这篇论文
致网友:如果你不小心检索到了这篇文章,请不要看,因为很烂.写下来用于作为我的笔记. 2014年,在LSVRC14(large-Scale Visual Recognition Challenge)中, ...
- oc总结 --oc基础语法相关知识
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...