-1

1)このExcelを読むと、「外部テーブルが期待される形式ではありません」などのエラーが発生します。

2)ダブルクリックでExcelファイルを開こうとすると、このようになります

" 開こうとしているファイル "just.xls" は、ファイル拡張子で指定されたものとは異なる形式です。ファイルを開く前に、ファイルが破損しておらず、信頼できるソースからのものであることを確認してください。開きますか?今ファイル?"

解決策を教えてください。これで何が問題になったのですか?助けてください..!c# asp.net エクセル

以下のコードを使用して Excel で Gridview を変換しています:--

string myfilename ="Attendenceformat" ;
    string attachment = "attachment; filename=" + myfilename + ".xls";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/ms-excel";
    StringWriter swriter = new StringWriter();
    HtmlTextWriter htmlwriter = new HtmlTextWriter(swriter);

    // Create a form to contain the gridview(MyGridView)
    HtmlForm mynewform = new HtmlForm();
    GridView1.Parent.Controls.Add(mynewform);
    mynewform.Attributes["runat"] = "server";
    mynewform.Controls.Add(GridView1);
    mynewform.RenderControl(htmlwriter);
    Response.Write(swriter.ToString());
    Response.End();

生成された Excel をアップロードするコードは次のとおりです。

 if ((txtFilePath.HasFile))
            {

                OleDbConnection conn = new OleDbConnection();
                OleDbCommand cmd = new OleDbCommand();
                OleDbDataAdapter da = new OleDbDataAdapter();
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                string query = null;
                string connString = "";
                string strFileName = txtFilePath.FileName;
                //string strFileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
                string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower();

                //Check file type
                if (strFileType == ".xls" || strFileType == ".xlsx")
                {
                    //print progressbar
                    txtFilePath.SaveAs(Server.MapPath("~/UploadedExcel/" + strFileName + strFileType));



                }
                else
                {
                    lblMessage.Text = "Only Excel files(.xls or .xlsx) allowed";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    lblMessage.Visible = true;
                    return;
                }

                string strNewPath = Server.MapPath("~/UploadedExcel/" + strFileName + strFileType);

                //Connection String to Excel Workbook
                if (strFileType.Trim() == ".xls")
                {
                    connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                }
                else if (strFileType.Trim() == ".xlsx")
                {
                    connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
                }

                conn = new OleDbConnection(connString);
                cmd.Connection = conn;

                conn.Open();
                dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                if (dt == null)
                {
                    lblMessage.Text = "Upload Excel files";
                    lblMessage.ForeColor = System.Drawing.Color.Red;
                    lblMessage.Visible = true;

                }

                string SheetName = dt.Rows[0]["TABLE_NAME"].ToString();



                query = "SELECT [Id],[RollNo],[Name],[Branch],[Sem],[Year],[Batch],[Subject],[Sessional],[Attendence],[OutOff] FROM  [Attendenceformat(1)$]";


                //Create the connection object
                  //Open connection
                if (conn.State == ConnectionState.Closed) conn.Open();
                //Create the command object
                cmd = new OleDbCommand(query, conn);
                //     cmd.Parameters.Add("stid",null);
                da = new OleDbDataAdapter(cmd);
                ds = new DataSet();
                da.Fill(ds);
                grvExcelData.DataSource = ds.Tables[0];
                grvExcelData.DataBind();

                lblMessage.Text = "Data retrieved successfully! Total Recodes:" + ds.Tables[0].Rows.Count;
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Visible = true;

                da.Dispose();
                conn.Close();
                conn.Dispose();

            }
            else
            {
                lblMessage.Text = "Please select an excel file first";
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Visible = true;
            }
        }
        catch (Exception em)
        {
            lblMessage.Text = em.Message;
            lblMessage.Visible = true;

        }
    }
4

1 に答える 1

1

このリンクを見てください:

ASP.NET で Excel ファイル (.xls) からデータを読み取る

ASP.NET アプリケーションから Excel にデータをエクスポートする方法

この助けを願っています

于 2013-03-07T04:58:03.627 に答える