none
Asp.net 导入excel 出错. RRS feed

  • 问题

  • 我有一个asp.net c# 项目,要导入excel 到CRM系统.我用的是上传并导入的方式, 以下是我的代码.

     

    按钮事件

    if (FileUpload1.PostedFile != null)

        {

            string FilePath = Path.GetFileName(this.FileUpload1.FileName);

            string FileName = Server.MapPath(Path.GetFileName(FilePath));

            string Extension = Path.GetExtension(this.FileUpload1.FileName);

            DataTable dt = ImportData(FileName, Extension);

     

    导入方法

    private DataTable ImportData(string Filepath, string Extension)
    {
        string connString = "";
        DataTable dt = new DataTable();
     
        switch (Extension)
        {
            case ".xls":
                connString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                break;
            case ".xlsx":
                connString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                break;
        }
     
        connString = string.Format(connString, Filepath, 1);
     
        try
        {
            OleDbConnection excelConn = new OleDbConnection(connString);
            OleDbCommand excelCmd = new OleDbCommand();
            OleDbDataAdapter oda = new OleDbDataAdapter();
            excelCmd.Connection = excelConn;
     
            excelConn.Open();
            DataTable dtexcelschema;
            dtexcelschema = excelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string SheetName = dtexcelschema.Rows[0]["TABLE_NAME"].ToString(); **The Error Come from this line**
            excelConn.Close();
     
            excelConn.Open();
            excelCmd.CommandText = "Select * from [" + SheetName + "]";
            oda.SelectCommand = excelCmd;
            oda.Fill(dt);
            excelConn.Close();
        }
        catch (Exception ex)
        {
           Label1.Text = ex.Message;
        }
        return dt;
    }
     

    导入的时候,报这样的错误:” There is no row at position 0”.

    是什么原因啊?
    2016年2月4日 13:58

答案

  • 你好,

    先上传文件,保存到服务器,再导入。请看下面的代码。

    string Filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
            string Extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
            string Folderpath = ConfigurationManager.AppSettings["FolderPath"];
    
            string Filepath = Server.MapPath(Folderpath + Filename);
            FileUpload1.SaveAs(Filepath);
    
            DataTable dt = ImportData(Filepath, Extension);

    Best regards,

    Cole Wu

    2016年2月9日 12:02