zoukankan      html  css  js  c++  java
  • C#通过excel导入数据,上传文件

    通过下载定制的excel模板,在excel模板上添加数据实现对数据的批量上传于修改,

    获取excel内容返回DataTable,再DataTable中验证处理上传的数据保存到数据库,代码如下

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.OleDb;
    using System.IO;
    namespace ExcelDemo

    {
        public class Excel
        {

            public Excel()
            {
                //          
                // TODO: 在此处添加构造函数逻辑          
                //      
            }
            static OleDbConnection GetConnection(string path)
            {
                var strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0;", path);
                var conn = new OleDbConnection(strConn);
                conn.Open();
                return conn;
            }
            ///        
            /// 获取Excel的表名[Sheet1$]      
            /// ///       
            /// /// Excel的路径       
            /// DataTable      
            public static DataTable GetExcelTableName(string path)
            {
                var conn = GetConnection(path);
                var dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                conn.Close();
                return dt;
            }

           /// <summary>
           /// 根据excel工作表名获取内容
           /// </summary>
           /// <param name="tableName">表名</param>
           /// <param name="path">文件路径</param>
           /// <returns>DataTable</returns>
             
            public static DataTable GetExcelTable(string tableName, string path)
            {
                var sql = string.Format("SELECT * FROM [{0}]", tableName);
                var conn = GetConnection(path);
                var myCommand = new OleDbDataAdapter(sql, conn);
                var myDataSet = new DataSet();
                myCommand.Fill(myDataSet);
                return myDataSet.Tables[0];
            }
            /// <summary>
            /// 删除文件
            /// </summary>
            /// <param name="path"></param>
            public static void DeleteFile(string path)
            {
                try
                {
                    File.Delete(path);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            /// <summary>
            /// 流式下载文件
            /// </summary>
            public static void DownLoadFile()
            {
                string fileName = "学员上传模板.xlsx";//客户端保存的文件名

                string filePath = HttpContext.Current.Server.MapPath("File/Temp/上传模板.xlsx");//路径 //以字符流的形式下载文件

                FileStream fs = new FileStream(filePath, FileMode.Open);

                byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length);

                fs.Close();

                HttpContext.Current.Response.ContentType = "application/octet-stream";

                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));//通知浏览器下载文件而不是打开

                HttpContext.Current.Response.BinaryWrite(bytes);

                HttpContext.Current.Response.Flush();

                HttpContext.Current.Response.End();
            }
           
        }

    }

  • 相关阅读:
    HDU-1225 Football Score
    HDU-3854 LOOPS
    HDU-3863 No Gambling
    poj-2096 Collecting Bugs
    HDU-4336 Card Collector
    HDU-4405 Aeroplane chess
    2010上交:最小面积子矩阵
    VijosP1443:银河英雄传说
    VijosP1250:分组背包
    Vijos1221:神秘的配方
  • 原文地址:https://www.cnblogs.com/yshj/p/2836823.html
Copyright © 2011-2022 走看看