部分代码如下:
protected void Button1_Click(object sender, EventArgs e)
    {        string path = getFilePath();
        Excel.Application app;
        Excel.Workbook workBook;
        Excel.Worksheet workSheet;
        app = new Excel.ApplicationClass();
        app.Visible = true;
        workBook = app.Workbooks.Open(path, Type.Missing,  Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        workSheet = (Excel.Worksheet)workBook.Sheets.get_Item(1);
    }
protected DataSet CreateDataSource()
    { 
        string strCon;
        string path = getFilePath();
        strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
        OleDbConnection olecon = new OleDbConnection(strCon);
        OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Report1$]",olecon);
        DataSet myds = new DataSet();
        myda.Fill(myds);
        return myds;
}
 GridView1.DataSource = CreateDataSource();
                GridView1.DataBind();
我现在表格能显示,数据也能显示,但是有些列的字段显示不了,而已在网页里面显示的表格的第一行是F1,F2...Fn这样的形式,我不知道这是从哪里出来的,我表格里面没有,不知道怎么回事?

解决方案 »

  1.   

    外部表不是预期的格式。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误: 
    行 99:         OleDbDataAdapter myda = new OleDbDataAdapter("SELECT * FROM [Report1$]",olecon);
    行 100:        DataSet myds = new DataSet();
    行 101:        myda.Fill(myds);
    行 102:        return myds;
    行 103:        
     
      

  2.   

    http://www.csharp360.com/bbs/viewthread.php?tid=142&extra=page%3D1
      

  3.   

    你这是从数据库导出数据到Excel,我是要从Excel导出数据到网页显示
      

  4.   


    public DataSet GetImportExcelData(string excelPath){
    using(System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';",excelPath))){
    try{
    conn.Open();
    DataTable SchemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
    string tableName = string.Empty;
    DataSet ds = new DataSet();
    foreach(DataRow row in SchemaTable.Rows){
    tableName = string.Format("select * from [{0}] ", row[2].ToString());
    using(System.Data.OleDb.OleDbDataAdapter dapter = new System.Data.OleDb.OleDbDataAdapter(tableName,conn)){
    System.Data.DataTable dt = new System.Data.DataTable();
    dapter.Fill(dt);
    ds.Tables.Add(dt);
    }
    }
    return ds;
    }
    catch(Exception ex){throw ex;}
    }
    }
    調用:DataSet  ds = GetImportExcelData("excel地址");
    GridView1.DataSource = ds.Tables[0].DefaultView;//可能返回多張表 這里只去第一張表
    GridView1.DataBind();
      

  5.   

    excel的格式必須規范
    必須是行列對應整齊的
    因為首行的列會作為數據庫里面的字段
      

  6.   

    string oleDBConnString = String.Empty;
                oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
                oleDBConnString += "Data Source=";
                oleDBConnString += fileName;
                oleDBConnString += ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";            OleDbConnection oleDBConn = null;
                OleDbDataAdapter oleAdMaster = null;
                DataTable m_tableName = new DataTable();
                DataSet ds = new DataSet();
                oleDBConn = new OleDbConnection(oleDBConnString);
                oleDBConn.Open();
                try
                {
                    m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                   // if (m_tableName != null && m_tableName.Rows.Count > 0)
                   // {
                   //     m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString();
                   // }
                    int hasmultiprotable=0;
                    for (int i = 0; i < m_tableName.Rows.Count; i++)
                    {
                        if (m_tableName.Rows[i]["TABLE_NAME"].ToString() == "多选题$")
                            hasmultiprotable = 1;                }
                    if(hasmultiprotable==0)
                    {
                        oleDBConn.Close();
                        oleDBConn.Dispose();
                        return -2;
                    }
                    else
                    {
                        string sqlMaster;
                        sqlMaster = "SELECT 题目,选项A,选项B,选项C,选项D,选项E,正确答案 FROM [多选题$]";
                        oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
                        oleAdMaster.Fill(ds, "NewMultiProTable");
                        oleAdMaster.Dispose();                    oleDBConn.Close();
                        oleDBConn.Dispose();
                    }
                }
                catch
                {
                    oleDBConn.Close();
                    oleDBConn.Dispose();
                    return -1;            }
    先放到dataset再绑定到页面
      

  7.   

    提示 GridVIEW1.Bind();出错,IListSource 不包含任何数据源。
      

  8.   

    首先导入excel 的时候 默认第一行为列名 不会导入
    如果 列名 是很简单的 1 2 3  这样的话   默认会被替换成F1 F2  F3 
      

  9.   

    对,我昨天导入的时候就是显示的F1...Fn,因为我的xls文件里面是报表的形式,前几行几列很不规范
    不知道怎么弄