C#Excel文件导入(兼容两种格式xls,xlsx)最新方法并且特别容易理解

C#Excel文件导入最新方法并且特别容易理解


最新链接文件提取: https://pan.baidu.com/s/19iBN-LptdZW6Q8W-fLxxfQ
提取码:apwr

网页页面样式
C#Excel文件导入(兼容两种格式xls,xlsx)最新方法并且特别容易理解_第1张图片

前台网页模块

//前台网页页面
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <p style="font-size:18px">注意:</p>
        <p style="color: red">  工作簿中窗口Sheet1不能为中文</p>
        <h2>选择Excel文档:</h2>
        
        <asp:FileUpload ID="FileUpload1" runat="server" BorderStyle="dotted" 
                        Font-Size="Medium" Font-Underline="False" Height="30px" ToolTip=" 选择文件" />
        <asp:Button ID="Button1" runat="server"  Text="导入" Width="150px" Height="50px" OnClick="Button1_Click" />
           
    </div>
    </form>
</body>

C#后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.OleDb;
using System.Data;

/// 
/// Mr. Yang
/// 
public partial class Admin_Report_InputExcel_cllangbiao : System.Web.UI.Page
{
    //存放文件路径
    public string filePath = "";

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        //获取文件路径
        try
        {

            //先上传文件至服务器

            string filename = this.FileUpload1.PostedFile.FileName;
            //判断路径是否为空
            if (filename != "")
            {

                string extension = (new FileInfo(filename)).Extension;

                string newfilename = System.DateTime.Now.ToString("yyyyMMddHHmmss") + extension;

                string path = Server.MapPath("~/UploadFile/");
                this.FileUpload1.PostedFile.SaveAs(path + newfilename);
                filePath = Server.MapPath("~/UploadFile/" + newfilename);


                if (filePath.Contains("xls"))//判断文件是否存在
                {
                    //执行导入方法
                    InputExcel(filePath);

                }
                else
                {
                    Response.Write("");

                }
            }

            else
            {
                Response.Write("");

            }
        }
        catch (Exception)
        {
            Response.End();


        }
    }

    private void InputExcel(string pPath)
    {

        try
        {
            //Excel文件版本
            string conn = "";


            //判断xls格式是否成立,注意如果版本没有Microsoft.ACE.OLEDB.4.0会报错
            if (pPath.EndsWith("xls") || pPath.EndsWith("XLS"))
            {

                conn = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + pPath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";

            }
            else if (pPath.EndsWith("xlsx") || pPath.EndsWith("XLSX"))//判断xlsx格式是否成立,注意如果版本没有Microsoft.ACE.OLEDB.12.0会报错
            {

                conn = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + pPath + "; Extended Properties='Excel 12.0 Xml;IMEX=1'";

            }

            OleDbConnection oleCon = new OleDbConnection(conn);
            oleCon.Open();

            //定义一个变量存放表格的页面名称
            string SheetName = "";

            
            DataTable dtExcelSchema = oleCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });//建立连接Excel的数据表

            SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();//取出第一个工作表我名称


            string Sql = "select * from [" + SheetName + "]";

            OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, oleCon);
            DataSet ds = new DataSet();
            mycommand.Fill(ds, "["+ SheetName +"]");
            oleCon.Close();

            //取到Excel表的列
            int count = ds.Tables["["+ SheetName +"]"].Rows.Count;
            //取到Excel表的行
            int cc = ds.Tables["["+ SheetName +"]"].Columns.Count;
            //在外面定义变量iok放在循环里面执行
            int iok = 0;
            //根据列循环表的所有数据
            for (int i = 0; i < count; i++)
            {

                //定义所有字段
                string 字段;
                                                                  //和Excel表一致
                字段 = "'" + ds.Tables["["+SheetName+"]"].Rows[i]["中文表名"].ToString().Trim() + "',";

                //字段名称 = "'" + DateTime.Now.ToLocalTime().ToString() + "'";//需要当前时间就用这个

                //数据库对应
                string strsql = "新增需要的字段所有名称";

                //需要新增的字段
                string strsqlt = "";

                //清除所有为空的数据单引号
                strsqlt = strsqlt.Replace("'NULL',", "NULL,");

                //新增sql语句存放在变量excelsql里面
                string excelsql = "insert into 表名 (" + strsql + ") values (" + strsqlt + ")";



                try
                {

                    //导入到SQL Server中

                    //判断第一个字段,剔除空数据
                    if (string.IsNullOrEmpty(字段) == false && string.IsNullOrEmpty(字段) == false)
                    {
                        //成立一次iok+1
                        iok = iok + 1;
                        //成立则执行新增
                        TGY.DBUtility.DbHelperSQL.ExecuteSQL(excelsql);

                    }
                    else
                    {
                        //不成立则弹出
                        TGY.Common.MessageBox.ShowAndRedirect("导入失败!", "空数据");
                    }


                }
                catch (Exception)
                {
                    iok = -1;

                }
            }

            //if判断事先定义好的iok是否被执行
            if (iok > 0)
            {
                //执行成功后显示出成功导入多少条数据
                TGY.Common.MessageBox.ShowAndRedirect("导入成功" + iok + "条数据!", "GoBack=False");
            }
            else
            {
                //不成立则弹出
                TGY.Common.MessageBox.ShowAndRedirect("导入失败!", "GoBack=False");

            }

        }
        catch (Exception eq)
        {

            Response.Write(eq);
            Response.End();
        }
    }
}

新人博客:Mr. Yang>咨询方式
C#Excel文件导入(兼容两种格式xls,xlsx)最新方法并且特别容易理解_第2张图片

你可能感兴趣的:(C#Excel文件导入(兼容两种格式xls,xlsx)最新方法并且特别容易理解)