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

首頁 > 編程 > C# > 正文

C#導入導出Excel數據的兩種方法

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

本文為大家分享了C#導入導出Excel數據的具體代碼,供大家參考,具體內容如下

注:對于實體類對象最好新建一個并且繼承原有實體類,這樣可以將類型進行修改;

方法一:此種方法是用EPPLUS中的FileInfo流進行讀取的(是不是流我還真不太了解,若有懂得請留言,非常感謝了)

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Abp.Extensions;namespace HYZT.Ltxy.International.Ctrip.Exporting{ public class ExcelLib {  public ICtripPolicyExcelImport GetExcel(string filePath)  {   if (filePath.Trim() .IsNullOrEmpty())    throw new Exception("文件名不能為空"); //因為這兒用得是EPPLUS對Excel進行的操作,所以只能操作 //2007以后的版本以后的(即擴展名為.xlsx)   if (!filePath.Trim().EndsWith("xlsx"))    throw new Exception("請使用office Excel 2007版本或2010版本");   else if (filePath.Trim().EndsWith("xlsx"))   {    ICtripPolicyExcelImport res = new CtripPolicyExcelImport(filePath.Trim());    return res;   }   else return null;  } }}

方法接口:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HYZT.Ltxy.International.Ctrip.Exporting{ public interface ICtripPolicyExcelImport {  /// <summary> 打開文件 </summary>   bool Open();   //ExcelVersion Version { get; }  /// <summary> 文件路徑 </summary>   string FilePath { get; set; }  /// <summary> 文件是否已經打開 </summary>   bool IfOpen { get; }  /// <summary> 文件包含工作表的數量 </summary>   int SheetCount { get; }  /// <summary> 當前工作表序號 </summary>   int CurrentSheetIndex { get; set; }  /// <summary> 獲取當前工作表中行數 </summary>   int GetRowCount();  /// <summary> 獲取當前工作表中列數 </summary>   int GetColumnCount();  /// <summary> 獲取當前工作表中某一行中單元格的數量 </summary>   /// <param name="Row">行序號</param>   int GetCellCountInRow(int Row);  /// <summary> 獲取當前工作表中某一單元格的值(按字符串返回) </summary>   /// <param name="Row">行序號</param>   /// <param name="Col">列序號</param>   string GetCellValue(int Row, int Col);  /// <summary> 關閉文件 </summary>   void Close();  }}

方法實現:

using OfficeOpenXml;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HYZT.Ltxy.International.Ctrip.Exporting{ public class CtripPolicyExcelImport:ICtripPolicyExcelImport {  public CtripPolicyExcelImport()   { }    public CtripPolicyExcelImport(string path)   { filePath = path; }  private string filePath = "";  private ExcelWorkbook book = null;  private int sheetCount = 0;  private bool ifOpen = false;  private int currentSheetIndex = 0;  private ExcelWorksheet currentSheet = null;  private ExcelPackage ep = null;     public bool Open()   {    try    {     ep = new ExcelPackage(new FileInfo(filePath));          if (ep == null) return false;     book =ep.Workbook;     sheetCount = book.Worksheets.Count;     currentSheetIndex = 0;     currentSheet = book.Worksheets[1];     ifOpen = true;    }    catch (Exception ex)    {     throw new Exception(ex.Message);    }    return true;   }    public void Close()   {    if (!ifOpen || ep == null) return;    ep.Dispose();   }    //public ExcelVersion Version   //{ get { return ExcelVersion.Excel07; } }    public string FilePath   {    get { return filePath; }    set { filePath = value; }   }    public bool IfOpen   { get { return ifOpen; } }    public int SheetCount   { get { return sheetCount; } }    public int CurrentSheetIndex   {    get { return currentSheetIndex; }    set    {     if (value != currentSheetIndex)     {      if (value >= sheetCount)       throw new Exception("工作表序號超出范圍");      currentSheetIndex = value;      currentSheet =book.Worksheets[currentSheetIndex+1];     }    }   }    public int GetRowCount()   {    if (currentSheet == null) return 0;    return currentSheet.Dimension.End.Row;   }    public int GetColumnCount()   {    if (currentSheet == null) return 0;    return currentSheet.Dimension.End.Column;   }    public int GetCellCountInRow(int Row)   {    if (currentSheet == null) return 0;    if (Row >= currentSheet.Dimension.End.Row) return 0;    return currentSheet.Dimension.End.Column;   }  //根據行號和列號獲取指定單元格的數據  public string GetCellValue(int Row, int Col)   {    if (currentSheet == null) return "";    if (Row >= currentSheet.Dimension.End.Row || Col >= currentSheet.Dimension.End.Column) return "";    object tmpO =currentSheet.GetValue(Row+1, Col+1);    if (tmpO == null) return "";    return tmpO.ToString();   }    }   }

方法調用實現功能:

//用于程序是在本地,所以此時的路徑是本地電腦的絕對路勁;//當程序發布后此路徑應該是服務器上的絕對路徑,所以在此之前還要有//一項功能是將本地文件上傳到服務器上的指定位置,此時在獲取路徑即可 public string GetExcelToCtripPolicy(string filePath)  {   ExcelLib lib = new ExcelLib();   if (filePath == null)    return new ReturnResult<bool>(false, "未找到相應文件");   string str= tmp.GetCellValue(i, j);    return str;  }

方法二:將Excel表格轉化成DataTable表,然后在對DataTable進行業務操作

using Abp.Application.Services;using OfficeOpenXml;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace HYZT.Ltxy.International.Ctrip.GetExcelToDataTable{ public class EPPlusHelperAppService:ApplicationService,IEPPlusHelperAppService {  private static string GetString(object obj)  {   try   {    return obj.ToString();   }   catch (Exception ex)   {    return "";   }  }  /// <summary>  ///將指定的Excel的文件轉換成DataTable (Excel的第一個sheet)  /// </summary>  /// <param name="fullFielPath">文件的絕對路徑</param>  /// <returns></returns>  public DataTable WorksheetToTable(string filePath)  {   try   {    FileInfo existingFile = new FileInfo(filePath);    ExcelPackage package = new ExcelPackage(existingFile);    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];//選定 指定頁    return WorksheetToTable(worksheet);   }   catch (Exception)   {    throw;   }  }  /// <summary>  /// 將worksheet轉成datatable  /// </summary>  /// <param name="worksheet">待處理的worksheet</param>  /// <returns>返回處理后的datatable</returns>  public static DataTable WorksheetToTable(ExcelWorksheet worksheet)  {   //獲取worksheet的行數   int rows = worksheet.Dimension.End.Row;   //獲取worksheet的列數   int cols = worksheet.Dimension.End.Column;   DataTable dt = new DataTable(worksheet.Name);   DataRow dr = null;   for (int i = 1; i <= rows; i++)   {    if (i > 1)     dr = dt.Rows.Add();    for (int j = 1; j <= cols; j++)    {     //默認將第一行設置為datatable的標題     if (i == 1)      dt.Columns.Add(GetString(worksheet.Cells[i, j].Value));     //剩下的寫入datatable     else      dr[j - 1] = GetString(worksheet.Cells[i, j].Value);    }   }   return dt;  } }}

之前我有一個程序用的是方法一進行Excel導入的,速度不是很快,后來我又用了第二種方法但是速度更慢了,到底這兩種方法哪種快,請指導,還是我用第二種方法的時候業務判斷有問題,不得而知,就請明白人指導我到底這兩種方法哪種比較好些。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久久中文字免| 中文字幕亚洲无线码a| 奇米四色中文综合久久| 国模gogo一区二区大胆私拍| 色偷偷综合社区| 欧美国产日韩xxxxx| 国产精品成人aaaaa网站| 一本色道久久88综合日韩精品| 国产福利视频一区| 亚洲最大的成人网| 亚洲午夜久久久久久久| 中文字幕久久久av一区| 日韩国产激情在线| 欧美性生交xxxxx久久久| 伊人久久免费视频| 国产香蕉97碰碰久久人人| 久久精品中文字幕| 57pao成人永久免费视频| 韩剧1988在线观看免费完整版| 成人黄色大片在线免费观看| 日韩黄色在线免费观看| 热re99久久精品国产66热| 亚洲毛片在线观看| 一区二区三区视频观看| 久久av红桃一区二区小说| 97在线看福利| 日韩视频免费大全中文字幕| 国产午夜精品视频免费不卡69堂| 国产精品美女主播在线观看纯欲| 亚洲国产精品小视频| 亚洲人成欧美中文字幕| 亚洲精品福利在线观看| 欧美精品videosex性欧美| 国产日韩欧美自拍| 成人午夜小视频| 午夜精品久久久久久久白皮肤| 精品国产一区久久久| 国产精品91久久久久久| www.日韩不卡电影av| 中文字幕亚洲欧美日韩在线不卡| 欧美专区在线观看| 一区二区在线视频播放| 久久偷看各类女兵18女厕嘘嘘| 久久久久久网站| 国产精品99一区| 日韩最新免费不卡| 狠狠色噜噜狠狠狠狠97| 成人黄在线观看| 欧美日韩一区二区免费在线观看| 国产精品久久久久久久久免费| 欧美高清不卡在线| 日韩va亚洲va欧洲va国产| 亚洲国产精品成人va在线观看| xxxx欧美18另类的高清| 一区二区三区无码高清视频| 日韩精品极品在线观看播放免费视频| 欧美性xxxxxxxxx| 成人免费自拍视频| 久久精品视频在线| 国产精品美乳一区二区免费| 久久69精品久久久久久国产越南| 欧美午夜激情小视频| 午夜免费久久久久| 日本欧美一级片| 精品一区二区电影| 亚洲第一精品电影| 日本午夜在线亚洲.国产| 欧美成人手机在线| 亚洲国产精品一区二区久| 亚洲人成电影在线播放| 中文日韩在线观看| 亚洲国模精品私拍| 不卡毛片在线看| 久久影院资源站| 91精品中国老女人| 亚洲电影免费观看高清完整版在线观看| 久久精品成人欧美大片| 91超碰中文字幕久久精品| 午夜精品一区二区三区视频免费看| 中文字幕一区电影| 色悠悠久久久久| 国产va免费精品高清在线观看| 国产精品劲爆视频| 色综合影院在线| 欧美韩国理论所午夜片917电影| 亚洲视频日韩精品| 欧美日韩一二三四五区| 亚洲国产精品美女| 国产精品久久久久久久电影| 精品美女久久久久久免费| 国产成人精品一区| 亚洲国产99精品国自产| 国产综合视频在线观看| 成人久久18免费网站图片| 日韩成人中文电影| 欧美激情视频网站| 性欧美暴力猛交69hd| 亚洲综合最新在线| 欧美人与性动交a欧美精品| 中文字幕亚洲图片| 九九综合九九综合| 国产精品白嫩初高中害羞小美女| 国内精品中文字幕| 亚洲专区在线视频| 夜夜嗨av色一区二区不卡| 国产精品香蕉在线观看| 中文字幕亚洲欧美日韩2019| 视频在线观看一区二区| 国产精品第8页| 亚洲福利在线看| 亚洲精品电影网站| 亚洲一区二区自拍| 色偷偷偷综合中文字幕;dd| 亚洲第一页中文字幕| 国产精品久久久久久久久久| 91sa在线看| 欧美性猛交xxxx乱大交极品| 欧美精品xxx| 91亚洲永久免费精品| 国产精品青草久久久久福利99| 国产欧美日韩综合精品| 91免费看片在线| 日韩精品视频在线免费观看| 国产精品欧美激情在线播放| 懂色av影视一区二区三区| 国产精品99一区| 亚洲在线观看视频网站| 亚洲天堂男人天堂女人天堂| 尤物九九久久国产精品的特点| 亚洲精品国产精品国自产观看浪潮| 久久久久久久网站| 国产精品一区二区三区成人| 热门国产精品亚洲第一区在线| 中文亚洲视频在线| www国产亚洲精品久久网站| 一区二区三区四区精品| 色七七影院综合| 亚洲人成电影在线播放| 欧美激情国产高清| 国产在线播放不卡| 91视频88av| 久久久久久久久久久网站| 亚洲视频自拍偷拍| 国产亚洲精品成人av久久ww| 最好看的2019的中文字幕视频| 欧美成人自拍视频| 精品国产老师黑色丝袜高跟鞋| 日韩在线视频一区| 91精品视频在线播放| 高清一区二区三区四区五区| 日本一区二区在线免费播放| 亚洲成人aaa| 亚洲黄色在线看| 91精品久久久久久久久中文字幕| 韩国v欧美v日本v亚洲| 久久久电影免费观看完整版| 97av在线视频免费播放| 欧美做受高潮1| 亚洲影院色无极综合| 欧美电影免费播放| 成人免费视频97| 日韩精品中文字幕视频在线| 国产精品激情av电影在线观看| 国产精品日韩久久久久|