电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

ASP.Net MVC利用NPOI導入導出Excel的示例代碼

瀏覽:173日期:2022-06-04 15:25:05

什么是NPOI

該項目是位于http://poi.apache.org/的POI Java項目的.NET版本。POI是一個開源項目,可以幫助您讀取/寫入xls,doc,ppt文件。它有著廣泛的應用。本文給大家介紹ASP.Net MVC利用NPOI導入導出Excel的問題。

因近期項目遇到所以記錄一下:

首先導出Excel:

首先引用NPOI包

(Action一定要用FileResult)

/// <summary>
/// 批量導出本校第一批派位學生
/// </summary>
/// <returns></returns>
public FileResult ExportStu2()
{
    string schoolname = "401";
    //創建Excel文件的對象
    NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
    //添加一個sheet
    NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");
    //獲取list數據
    List<TB_STUDENTINFOModel> listRainInfo = m_BLL.GetSchoolListAATQ(schoolname);
    //給sheet1添加第一行的頭部標題
    NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
    row1.CreateCell(0).SetCellValue("電腦號");
    row1.CreateCell(1).SetCellValue("姓名");
    //將數據逐步寫入sheet1各個行
    for (int i = 0; i < listRainInfo.Count; i++)
    {
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
rowtemp.CreateCell(0).SetCellValue(listRainInfo[i].ST_CODE.ToString());
rowtemp.CreateCell(1).SetCellValue(listRainInfo[i].ST_NAME.ToString());
    }
    // 寫入到客戶端 
    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    book.Write(ms);
    ms.Seek(0, SeekOrigin.Begin);
    return File(ms, "application/vnd.ms-excel", "第一批電腦派位生名冊.xls");
}

前臺直接寫就可實現:

@Html.ActionLink("點擊導出名冊", "ExportStu2")

下面說一下導入:

首先說一些前臺吧,mvc上傳注意必須加new { enctype = "multipart/form-data" }:

<td>
2、@using(@Html.BeginForm("ImportStu", "ProSchool", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
 <text>選擇上傳文件:(工作表名為“Sheet1”,“電腦號”在A1單元格。)</text>
<input name="file" type="file" id="file" />
<input type="submit" name="Upload" value="批量導入第一批電腦派位名冊" />
 }
 </td>

后臺實現:只傳路徑得出DataTable:

/// <summary>
/// Excel導入
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public DataTable ImportExcelFile(string filePath)
{
    HSSFWorkbook hssfworkbook;
    #region//初始化信息
    try
    {
using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
    hssfworkbook = new HSSFWorkbook(file);
}
    }
    catch (Exception e)
    {
throw e;
    }
    #endregion
    using (NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0))
    {
DataTable table = new DataTable();
IRow headerRow = sheet.GetRow(0);//第一行為標題行
int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells
int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1
//handling header.
for (int i = headerRow.FirstCellNum; i < cellCount; i++)
{
    DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);
    table.Columns.Add(column);
}
for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)
{
    IRow row = sheet.GetRow(i);
    DataRow dataRow = table.NewRow();
    if (row != null)
    {
for (int j = row.FirstCellNum; j < cellCount; j++)
{
    if (row.GetCell(j) != null)
dataRow[j] = GetCellValue(row.GetCell(j));
}
    }
    table.Rows.Add(dataRow);
}
return table;
    }
    
}

補充一個類

/// <summary>
/// 根據Excel列類型獲取列的值
/// </summary>
/// <param name="cell">Excel列</param>
/// <returns></returns>
private static string GetCellValue(ICell cell)
{
    if (cell == null)
return string.Empty;
    switch (cell.CellType)
    {
case CellType.BLANK:
    return string.Empty;
case CellType.BOOLEAN:
    return cell.BooleanCellValue.ToString();
case CellType.ERROR:
    return cell.ErrorCellValue.ToString();
case CellType.NUMERIC:
case CellType.Unknown:
default:
    return cell.ToString();//This is a trick to get the correct value of the cell. NumericCellValue will return a numeric value no matter the cell value is a date or a number
case CellType.STRING:
    return cell.StringCellValue;
case CellType.FORMULA:
    try
    {
HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
e.EvaluateInCell(cell);
return cell.ToString();
    }
    catch
    {
return cell.NumericCellValue.ToString();
    }
    }
}

得到DataTable后,就想怎么操作就怎么操作了

到此這篇關于ASP.Net MVC利用NPOI導入導出Excel的示例代碼的文章就介紹到這了,更多相關ASP.Net MVC導入導出Excel內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: ASP
主站蜘蛛池模板: 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 重庆中专|职高|技校招生-重庆中专招生网 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 【官网】博莱特空压机,永磁变频空压机,螺杆空压机-欧能优 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | ge超声波测厚仪-电动涂膜机-电动划格仪-上海洪富 | 衬氟止回阀_衬氟闸阀_衬氟三通球阀_衬四氟阀门_衬氟阀门厂-浙江利尔多阀门有限公司 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 包头市鑫枫装饰有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | LOGO设计_品牌设计_VI设计 - 特创易 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 标策网-专注公司商业知识服务、助力企业发展 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 食品机械专用传感器-落料放大器-低价接近开关-菲德自控技术(天津)有限公司 | 电主轴-高速精密电主轴-高速电机厂家-瑞德沃斯品牌有限公司 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 江苏皓越真空设备有限公司| 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 铆钉机|旋铆机|东莞旋铆机厂家|鸿佰专业生产气压/油压/自动铆钉机 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 |