C#NPOI 從Excel保存到數據庫


首先需要引用程序集

或管理NuGet程序包 安裝NPOI

需引用

public ActionResult SqlBulkCopyByDatatable(string TableName)
        {
            using (FileStream fileReader = System.IO.File.OpenRead(@"C: \Users\acer\Desktop\112.xlsx"))
            {
                //創建工作簿對象接收文件流(Excel信息)
                IWorkbook workbook = new XSSFWorkbook(fileReader);
                //IWorkbook workbook = new HSSFWorkbook(fileReader);
                //工作簿共有幾個表
                //int count = workbook.NumberOfSheets;
                //創建工作表讀取工作簿表信息
                //ISheet sheet= workbook.GetSheet("表名稱");
                ISheet sheet = workbook.GetSheetAt(0);
                string sql = @" insert into student(xuehao,name,sex,xueyuan,stuclass,nums,states) values (@xuehao,@name,@sex,@xueyuan,@stuclass,@nums,@states)";
                int ii = 0;
                //r = 1,剔除表頭一行
                for (int r = 1; r <= sheet.LastRowNum; r++)
                {
                    //定義參數數組para
                    SqlParameter[] para = new SqlParameter[] {
                    new SqlParameter("xuehao",SqlDbType.NVarChar,100),
                    new SqlParameter("name",SqlDbType.NVarChar,100),
                    new SqlParameter("sex",SqlDbType.NVarChar,100),
                    new SqlParameter("xueyuan",SqlDbType.NVarChar,100),
                    new SqlParameter("stuclass",SqlDbType.NVarChar,100),
                    new SqlParameter("nums",SqlDbType.NVarChar,100),
                    new SqlParameter("states",SqlDbType.NVarChar,50)
                };
                    //創建一行獲取sheet行數據
                    IRow row = sheet.GetRow(r);
                    //List<ICell> listcell = new List<ICell>();
                    //int c = 1 即不讀取自動編號的Id列
                    for (int c = 0; c < row.LastCellNum; c++)
                    {
                        //將每行每個單元格的值添加帶listcell集合中
                        //listcell.Add(row.GetCell(c));
                        //將每行的每個單元格的數據添加到para中 c-1即從0 開始記錄參數
                        para[c].Value = row.GetCell(c).ToString();
                    }
                    //循環賦值給para
                    //for (int i = 0; i < listcell.Count; i++)
                    //{
                    //    para[i].Value = listcell[i].ToString();
                    //}
                    //執行添加Sql語句
                    ii = DBHelper.ExecuteNonQuery(sql, para);
                }
                if (ii > 0)
                {
                    return Content("<script>alert('已將Excel數據插入到數據庫表')</script>");
                }
                else
                {
                    return Content("<script>alert('Excel數據插入到數據庫表失敗!')</script>");
                }

            }
        }

 

其中甚至不需要改變什么東西,如果本機的excel版本為2007之前的 需將

改為

 

其次為

這里存放的是絕對路徑

 

 

再有就是根據自己的數據庫表改變Insert語句

這里我放的是DBHelper,可以根據自己需要使用幫助類或者寫ADO.net或者使用自己的方法

尤其需要注意這里,它決定行列從哪個開始

至此 一個比較簡單的Excel數據導入到數據庫就搞定了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM