亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#使用NPOI導入Excel的方法詳解

2019-10-29 21:11:44
字體:
來源:轉載
供稿:網友

本文實例講述了C#使用NPOI導入Excel的方法。分享給大家供大家參考,具體如下:

NPOI是由國人開發的一個進行excel操作的第三方庫。百度百科介紹如下:NPOI

本文主要介紹如何使用NPOI將Excel數據讀取。

首先引入程序集:

using System.IO;using System.Reflection;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System.Web;

然后定位到文件位置:

string path = "~/上傳文件/custompersonsalary/" + id + "/"+id+".xls";string filePath = Server.MapPath(path);FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite) //打開.xls文件

接下來,將xls文件中的數據寫入workbook中:

HSSFWorkbook wk = new HSSFWorkbook(fs); //把xls文件中的數據寫入wk中

wk.NumberOfSheets是xls文件中總共的表的個數。

wk.GetSheetAt(i)是獲取第i個表的數據。

通過循環:

for (int i = 0; i < wk.NumberOfSheets; i++) //NumberOfSheets是xls文件中總共的表數

將每個表的數據單獨存放在ISheet對象中:

ISheet sheet = wk.GetSheetAt(i); //讀取當前表數據

這樣某張表的數據就暫存在sheet對象中了。
接下來,我們可以通過sheet.LastRowNum來獲取行數,sheet.GetRow(j)來獲取第j行數據:

for (j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是當前表的總行數{  IRow row = sheet.GetRow(j); //讀取當前行數據

每一行的數據又存在IRow對象中。

我們可以通過row.LastCellNum來獲取列數,row.Cells[i]來獲取第i列數據。

row.Cells[2].ToString();

這里需要注意一點的就是,如果單元格中數據為公式計算而出的話,row.Cells[i]會返回公式,需要改為:

row.Cells[2].NumericCellValue

就可以返回計算結果了。

最后將我在項目中用到的一段導入Excel數據賦予實體的示例如下:

/// <summary>/// 導入操作/// </summary>/// @author: 劉放/// @date: 2015/10/17/// <param name="id">主表id</param>/// <returns>如果成功,返回ok,如果失敗,返回不滿足格式的姓名</returns>public string InDB(string id){ int j=0; StringBuilder sbr = new StringBuilder(); string path = "~/上傳文件/custompersonsalary/" + id + "/"+id+".xls"; string filePath = Server.MapPath(path); using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) //打開123.xls文件 {  //定義一個工資詳細集合  List<HR_StaffWage_Details> staffWageList = new List<HR_StaffWage_Details>();  try  {   HSSFWorkbook wk = new HSSFWorkbook(fs); //把xls文件中的數據寫入wk中   for (int i = 0; i < wk.NumberOfSheets; i++) //NumberOfSheets是xls文件中總共的表數   {    ISheet sheet = wk.GetSheetAt(i); //讀取當前表數據    for (j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是當前表的總行數    {     IRow row = sheet.GetRow(j); //讀取當前行數據     if (row != null)     {      //for (int k = 0; k <= row.LastCellNum; k++) //LastCellNum 是當前行的總列數      //{      //如果某一行的員工姓名,部門,崗位和員工信息表不對應,退出。      SysEntities db = new SysEntities();      if (CommonHelp.IsInHR_StaffInfo(db, row.Cells[2].ToString(), row.Cells[0].ToString(), row.Cells[1].ToString()) == false)//姓名,部門,崗位      {       //返回名字以便提示       return row.Cells[2].ToString();      }      //如果符合要求,這將值放入集合中。      HR_StaffWage_Details hr_sw = new HR_StaffWage_Details();      hr_sw.Id = Result.GetNewIdForNum("HR_StaffWage_Details");//生成編號      hr_sw.SW_D_Name = row.Cells[2].ToString();//姓名      hr_sw.SW_D_Department = row.Cells[0].ToString();//部門      hr_sw.SW_D_Position = row.Cells[1].ToString();//職位      hr_sw.SW_D_ManHour = row.Cells[3].ToString() != "" ? Convert.ToDouble(row.Cells[3].ToString()) : 0;//工數      hr_sw.SW_D_PostWage = row.Cells[4].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[4].NumericCellValue.ToString()) : 0;//基本工資      hr_sw.SW_D_RealPostWage = row.Cells[5].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[5].NumericCellValue.ToString()) : 0;//崗位工資      hr_sw.SW_D_PieceWage = row.Cells[6].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[6].NumericCellValue.ToString()) : 0;//計件工資      hr_sw.SW_D_OvertimePay = row.Cells[7].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[7].NumericCellValue.ToString()) : 0;//加班工資      hr_sw.SW_D_YearWage = row.Cells[8].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[8].NumericCellValue.ToString()) : 0;//年假工資      hr_sw.SW_D_MiddleShift = row.Cells[9].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[9].NumericCellValue.ToString()) : 0;//中班      hr_sw.SW_D_NightShift = row.Cells[10].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[10].NumericCellValue.ToString()) : 0;//夜班      hr_sw.SW_D_MedicalAid = row.Cells[11].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[11].NumericCellValue.ToString()) : 0;//醫補      hr_sw.SW_D_DustFee = row.Cells[12].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[12].NumericCellValue.ToString()) : 0;//防塵費      hr_sw.SW_D_Other = row.Cells[13].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[13].NumericCellValue.ToString()) : 0;//其他      hr_sw.SW_D_Allowance = row.Cells[14].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[14].NumericCellValue.ToString()) : 0;//津貼      hr_sw.SW_D_Heat = row.Cells[15].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[15].NumericCellValue.ToString()) : 0;//防暑費      hr_sw.SW_D_Wash = row.Cells[16].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[16].NumericCellValue.ToString()) : 0;//澡費      hr_sw.SW_D_Subsidy = row.Cells[17].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[17].NumericCellValue.ToString()) : 0;//補助      hr_sw.SW_D_Bonus = row.Cells[18].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[18].NumericCellValue.ToString()) : 0;//獎金      hr_sw.SW_D_Fine = row.Cells[19].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[19].NumericCellValue.ToString()) : 0;//罰款      hr_sw.SW_D_Insurance = row.Cells[20].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[20].NumericCellValue.ToString()) : 0;//養老保險      hr_sw.SW_D_MedicalInsurance = row.Cells[21].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[21].NumericCellValue.ToString()) : 0;//醫療保險      hr_sw.SW_D_Lunch = row.Cells[22].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[22].NumericCellValue.ToString()) : 0;//餐費      hr_sw.SW_D_DeLunch = row.Cells[23].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[23].NumericCellValue.ToString()) : 0;//扣餐費      hr_sw.SW_D_De = row.Cells[24].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[24].NumericCellValue.ToString()) : 0;//扣項      hr_sw.SW_D_Week = row.Cells[25].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[25].NumericCellValue.ToString()) : 0;//星期      hr_sw.SW_D_Duplex = row.Cells[26].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[26].NumericCellValue.ToString()) : 0;//雙工      hr_sw.SW_D_ShouldWage = row.Cells[27].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[27].NumericCellValue.ToString()) : 0;//應發金額      hr_sw.SW_D_IncomeTax = row.Cells[28].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[28].NumericCellValue.ToString()) : 0;//所得稅      hr_sw.SW_D_FinalWage = row.Cells[29].NumericCellValue.ToString() != "" ? Convert.ToDouble(row.Cells[29].NumericCellValue.ToString()) : 0;//實發金額      hr_sw.SW_D_Remark = row.Cells[30].ToString();//備注      hr_sw.SW_Id = id;//外鍵      hr_sw.SW_D_WageType = null;//工資類型      staffWageList.Add(hr_sw);     }    }   }  }  catch (Exception e) {   //錯誤定位   int k = j;  }  //再將list轉入數據庫  double allFinalWage = 0;  foreach (HR_StaffWage_Details item in staffWageList)  {   SysEntities db = new SysEntities();   db.AddToHR_StaffWage_Details(item);   db.SaveChanges();   allFinalWage +=Convert.ToDouble(item.SW_D_FinalWage);  }  //將總計賦予主表  SysEntities dbt = new SysEntities();  HR_StaffWage sw = CommonHelp.GetHR_StaffWageById(dbt, id);  sw.SW_WageSum = Math.Round(allFinalWage,2);  dbt.SaveChanges(); } sbr.ToString();  return "OK";}

最后需要注意一點的就是,Excel中即使某些單元格內容為空,但是其依舊占據了一個位置,所以在操作的時候需要格外注意。

 

希望本文所述對大家C#程序設計有所幫助。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人高清视频观看www| 国产精品久久久久久久午夜| 欧美国产精品人人做人人爱| 亚洲午夜国产成人av电影男同| 啪一啪鲁一鲁2019在线视频| 黑人巨大精品欧美一区二区三区| 国产精品www| 国产精品91在线观看| 亚洲欧洲国产一区| 91在线免费观看网站| 亚洲一区美女视频在线观看免费| 最近2019年中文视频免费在线观看| 亚洲伦理中文字幕| 亚洲欧美日韩一区二区在线| 欧美激情网站在线观看| 欧美影院成年免费版| 亚洲精品suv精品一区二区| 97人人做人人爱| 九九热精品视频国产| 欧美性69xxxx肥| 日韩成人在线播放| 中文字幕日韩高清| 欧美尺度大的性做爰视频| 91丨九色丨国产在线| 国产成人亚洲综合青青| 日韩av色综合| 成人免费视频97| 精品久久久久久久大神国产| 成人激情视频免费在线| 国内成人精品一区| 亚洲欧美三级伦理| 日韩欧美在线免费| 91色琪琪电影亚洲精品久久| 成人av在线亚洲| 成人国产精品久久久| 久久久伊人欧美| 国产精品老女人精品视频| 91国自产精品中文字幕亚洲| 91美女片黄在线观看游戏| 国产精品igao视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 91亚洲精华国产精华| 91精品久久久久久久久久| 日韩欧美精品中文字幕| 日韩中文字幕在线精品| 日韩欧美精品中文字幕| 精品视频—区二区三区免费| 亚洲图中文字幕| 国产精品视频资源| 国产ts人妖一区二区三区| 亚洲欧美中文日韩v在线观看| 日韩电影免费观看中文字幕| 久久免费视频在线观看| 大胆人体色综合| 91老司机精品视频| 在线观看日韩欧美| 这里精品视频免费| 国产精品美女久久久久久免费| 色综合久久88色综合天天看泰| 免费不卡在线观看av| 欧美另类极品videosbest最新版本| 国产mv免费观看入口亚洲| 久久久女人电视剧免费播放下载| 伊人伊成久久人综合网小说| 在线观看日韩专区| 欧美色欧美亚洲高清在线视频| 亚洲欧美在线第一页| 久久人人爽人人| 国外日韩电影在线观看| 欧美一级视频一区二区| 欧美一级片免费在线| 精品亚洲一区二区三区在线观看| 亚洲国产福利在线| 国产精品露脸av在线| 国产欧美婷婷中文| 色久欧美在线视频观看| 亚洲成人免费在线视频| 成人激情视频在线| 国内精久久久久久久久久人| 一区国产精品视频| 国产伦精品一区二区三区精品视频| 欧美视频一区二区三区…| 亚洲精品久久久久中文字幕二区| 日韩欧美一区二区在线| 在线免费观看羞羞视频一区二区| 成人免费高清完整版在线观看| 国产精品∨欧美精品v日韩精品| 中文字幕无线精品亚洲乱码一区| 国产成+人+综合+亚洲欧美丁香花| 欧美精品精品精品精品免费| 中文字幕久久精品| 日韩中文字幕在线视频| 日韩一区在线视频| 国产精品影院在线观看| 欧美日韩国产成人在线观看| 亚洲自拍偷拍一区| 亚洲精品wwwww| 亚洲福利视频免费观看| 国产精品久久久久久久久久免费| 最近更新的2019中文字幕| 91色在线观看| 国产国语刺激对白av不卡| 中文字幕日韩在线视频| 久久久久久久一区二区| 欧美日韩国产中文字幕| 欧美人在线视频| 久久精品视频免费播放| 国产精品久久电影观看| 成人午夜高潮视频| 国产美女久久精品香蕉69| 日韩精品有码在线观看| 久久精品这里热有精品| 最新日韩中文字幕| 亚洲精选中文字幕| 国产丝袜高跟一区| 国产在线精品成人一区二区三区| 欧美精品手机在线| 疯狂欧美牲乱大交777| 中文字幕久热精品视频在线| 911国产网站尤物在线观看| 国产美女精品免费电影| 欧美日产国产成人免费图片| 国产不卡精品视男人的天堂| 国产精品看片资源| 这里精品视频免费| 亚洲理论片在线观看| 亚洲自拍欧美色图| 国产综合在线视频| 97色在线观看| 狠狠色香婷婷久久亚洲精品| 久久精品国产亚洲7777| 日韩欧美大尺度| 久久天堂av综合合色| 深夜精品寂寞黄网站在线观看| 亚洲欧美国产精品va在线观看| 久久久久久久网站| 成人免费高清完整版在线观看| 91a在线视频| 国产精品www色诱视频| 2019中文字幕在线免费观看| 欧美成人国产va精品日本一级| 久久精品国产清自在天天线| 2019中文在线观看| 在线国产精品视频| 国产精品夜色7777狼人| 91亚洲午夜在线| 国产婷婷97碰碰久久人人蜜臀| 日韩a**中文字幕| 色与欲影视天天看综合网| 国产精品99久久久久久www| 欧美二区在线播放| 欧美韩国理论所午夜片917电影| 97**国产露脸精品国产| 91久久久久久久一区二区| 亚洲在线观看视频| 欧美精品一区二区免费| 久久久久久国产精品三级玉女聊斋| 成年无码av片在线| 久精品免费视频| 亚洲国内精品视频| 亚洲乱亚洲乱妇无码| www.亚洲免费视频| 国产精品久久久久久久av大片| 国产视频精品va久久久久久|