ASP.NET MVCでのExcelの操作

17649 ワード

ASP.NET MVCでのExcelの操作

Excelデータのインポートとエクスポート


Excelデータのインポートとエクスポート操作、本文はASP.NET MVCは、自分のために記録を作ります.

Excelデータのインポート


Excelデータのインポート方法はいろいろありますが、使用した方法についてまとめます.すべての方法の前提は、まずExcelをサーバ側に保存することです.この方法は簡単です.ファイルの保存、戻る方法です.
//    
<form action="" method="post" enctype="multipart/form-data">
	<input name="myfile" type="file" accept="application/vnd.ms-excel">
</form>
//    
HttpPostedFileBase file = Request.Files["myfile"];
file.SaveAs("    .xlsx");//    
  • NPOI、NPOIはxls、doc、pptドキュメントを読み取るためのPOIプロジェクトに由来し、POIはJavaプロジェクトである、後にあるためである.Netの市場は、POIを移植する.Net上;
  • LinqToExcel、このライブラリファイルは使いやすくて、実用的で、操作が便利だと感じて、その上Linqのクエリーの特性を結びつけて、excelバージョンは03を支持するだけではなくて、その上wps表さえ(接尾辞名.et)を支持して、csvファイルは更に話の下にありません;
  • OLEDBは、OLEDB方式でEXCELを読み取る速度が非常に速い.しかし、Excelのデータ量が多い場合.メモリが非常に消費され、メモリが不足するとメモリオーバーフローの異常が放出され、インストールが必要になります([AccessDatabaseEngine];
  • Microsoft.Office.Interop.Excel、まずサーバーはofficeソフトウェアをインストールする必要があります;

  • NPOI


    まずDLLをダウンロードし、リファレンスを追加します.
  • using NPOI.SS.UserModel;
  • using NPOI.HSSF.UserModel;
  • using NPOI.XSSF.UserModel;
  • DataTable dt = new DataTable();
    IWorkbook workbook = null;  //  IWorkbook    
    string extension = System.IO.Path.GetExtension(fullPath);
    FileStream fileStream = new FileStream(fullPath,FileMode.Open,FileAccess.Read);
    if (extension ==".xlsx") // 2007    
    {
    	workbook = new XSSFWorkbook(fileStream);  //xlsx    workbook  
    }
    else if (extension ==".xls") // 2003    
    {
    	workbook = new HSSFWorkbook(fileStream);  //xls    workbook  
    }
    ISheet sheet = workbook.GetSheetAt(0);  //          
    IRow row;//            
    for (int i = 0; i < sheet.LastRowNum; i++)  //         
    {
    	row = sheet.GetRow(i);   //row   i     
    	if (row != null)
    	{
        	if (row.LastCellNum >= 3)
        	{
             	DataRow rows = dt.NewRow();
             	rows[0] = row.GetCell(0).ToString();
             	rows[1] = row.GetCell(1).ToString();
             	dt.Rows.Add(rows);
             }
    	}
    }
    fileStream.Close();
    System.IO.File.Delete(fullPath);
    return dt;
    

    LinqToExcel

    //       
     public List<Admin_Login> GetImportData(string fileName)
    {
    	List<Admin_Login> List = new List<Admin_Login>();
    	var excelFile = new ExcelQueryFactory(fileName);
    	//    
    	excelFile.AddMapping<Admin_Login>(x => x.UserName, "UserName");
    	excelFile.AddMapping<Admin_Login>(x => x.Power, "Power");
    	excelFile.AddMapping<Admin_Login>(x => x.CreateTime, "CreateTime");
        //SheetName
        var excelContent = excelFile.Worksheet<Admin_Login>(0);
    	int rowIndex = 1;
        //       
        foreach (var row in excelContent)
        {
         	var model = new Admin_Login();
            model.UserName = row.UserName;
            model.Power = row.Power;
            model.CreateTime = row.CreateTime;              
            List.Add(model);
            rowIndex += 1;
        }
         return List;
    }
    

    OLEDB

    public static DataSet Get_ExcelSheet_Source(string P_str_Excel, string P_str_SheetName)
    {
    	DataSet myds = new DataSet();//        
    	//--HDR = Yes;”          ,     ,
    	//-----"IMEX=1;”         “  ”         。
    	//---------Excel 8.0   Excel2000     ,Excel5.0   Excel97。
        string P_str_OledbCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + P_str_Excel + ";Extended Properties=Excel 8.0;";
        OleDbConnection oledbcon = new OleDbConnection(P_str_OledbCon);//   Oledb       
        string P_str_ExcelSql = "";//    ,        Excel    
        OleDbDataAdapter oledbda = null;//   Oledb       
        P_str_ExcelSql = string.Format("select * from [{0}]", P_str_SheetName);//      Excel    
        oledbda = new OleDbDataAdapter(P_str_ExcelSql, P_str_OledbCon);//         Excel  
        oledbda.Fill(myds, P_str_SheetName);//    
        return myds;
    }