最近要做如下需求的项目,搜便了网络,还是末能找到解决方案。
情况是这样的:
    我这个程序需求读一个“台财“的EXCEL文件。该文件内容是些汇总信息。
    但我不需要“打开”该文件,也不要“另存为”。只要读取里面的相关数据即可。
    我用尽了方法,用一种方式做到了不弹出”另存为“对话框”。但每次操作都会打开该文档。

解决方案 »

  1.   

    你实际上是打开了你要的那个EXCEL文件的,只是不要那个打开的对话框,打开的对话框只是为了指定路径,那你就直接将要读取的EXCEL文件路径写到代码里就是了
      

  2.   

    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
    DataSet ds = new DataSet();
    using(OleDbConnection conn = new OleDbConnection(strConn))
    {
    conn.Open();
    string str = "select * from [sheet1$]";
    OleDbDataAdapter da= new OleDbDataAdapter(str, conn);
    da.Fill(ds);
    conn.Close();
    }
    读取到dataset
      

  3.   


    public void WriteExcel(DataTable dtSource, string strPath, string strSheetName)
        {
            System.Data.OleDb.OleDbConnection OleDb_Conn = new System.Data.OleDb.OleDbConnection();
            OleDb_Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=No';" + "Data Source=\"" + strPath + "\"";
            try
            {
                OleDb_Conn.Open();
                System.Data.OleDb.OleDbCommand OleDb_Comm = new System.Data.OleDb.OleDbCommand();
                OleDb_Comm.Connection = OleDb_Conn;
                string strCmd;
                try
                {
                    strCmd = "drop table [" + strSheetName + "]";
                    OleDb_Comm.CommandText = strCmd;
                    OleDb_Comm.ExecuteNonQuery();
                }
                catch
                {
                }
                strCmd = "create Table [" + strSheetName + "](";
                foreach (DataColumn dc in dtSource.Columns)
                {
                    strCmd += "[" + dc.ColumnName + "] nvarchar(100),";
                }
                strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
                strCmd += ")";
                OleDb_Comm.CommandText = strCmd;
                OleDb_Comm.ExecuteNonQuery();
                foreach (DataRow dr in dtSource.Rows)
                {
                    if (dr.RowState != System.Data.DataRowState.Deleted)
                    {
                        strCmd = "insert into [" + strSheetName + "] values(";
                        foreach (DataColumn dc in dtSource.Columns)
                        {
                            strCmd += "'" + dr[dc.ColumnName].ToString() + "',";
                        }
                        strCmd = strCmd.Substring(0, strCmd.Length - 1);
                        strCmd += ")";
                        OleDb_Comm.CommandText = strCmd;
                        OleDb_Comm.ExecuteNonQuery();
                    }
                }
                OleDb_Conn.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                OleDb_Conn.Close();
            }
        }