我先把查询出数据放到dataset中,然后把dataset中数据一行一行写入excel中(不会),C#代码怎么写???我还希望excel表有列名,比如第一列为“编号”……高手请详细说明!!!如需要添加引用,请写出来,谢谢!!

解决方案 »

  1.   

    用SQL 写入,这需要有一个excel文件.Path 为EXCEL文件名,带路径        public bool SaveToExcel(string Path, DataTable tmp)
            {
                //logTxtW.writelog("saveasd.txt", "0000000000000000000");            string insertCMD = "INSERT INTO [sheet1$] (", valuesStr = "";
                for (int i = 0; i < tmp.Columns.Count; i++)
                {
                    if(i!=tmp.Columns.Count -1)
                        insertCMD = insertCMD + tmp.Columns[i].Caption + ",";
                    else
                        insertCMD = insertCMD + tmp.Columns[i].Caption +") ";
                }            //logTxtW.writelog("saveasd.txt", "111111111111");
                
                try
                {
                    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
                    conn.Open();
                    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
                    cmd.Connection = conn;
                    for (int i = 0; i < tmp.Rows.Count; i++)
                    {
                        valuesStr = " VALUES(";
                        for (int j = 0; j < tmp.Columns.Count; j++)
                        {
                            if (j != tmp.Columns.Count - 1)
                            {
                                //if (tmp.Columns[j].GetType().ToString() != "System.String")
                                //    valuesStr = valuesStr + "convert(int,'" + tmp.Rows[i][j].ToString() + "'),";
                                //else
                                    valuesStr = valuesStr + "'" + tmp.Rows[i][j].ToString() + "',";
                            }
                            else
                            {
                                //if (tmp.Columns[j].GetType().ToString() != "System.String")
                                //    valuesStr = valuesStr + "convert(int,'" + tmp.Rows[i][j].ToString() + "'))";
                                //else
                                    valuesStr = valuesStr + "'" + tmp.Rows[i][j].ToString() + "')";
                            }
                        }                    cmd.CommandText = insertCMD + valuesStr;
                        //logTxtW.writelog("saveasd.txt",cmd.CommandText );
                        cmd.ExecuteNonQuery();
                    }
                    conn.Close();
                    return true;
                }
                catch (Exception  ex)
                {
                    logTxtW.writelog(DateTime.Now.ToString()+"SaveToExcel.txt","写入Excel发生错误:" + ex.Message);
                    return false;
                }
            }不知能不能解决你的问题
      

  2.   

    本想把代码直接发到这里,结果说我回复内容过长,只好麻烦你到我博客去看看了。http://tb.blog.csdn.net/TrackBack.aspx?PostId=2306153
      

  3.   

    不好意思,发错链接了,重发一次。http://blog.csdn.net/smilebrid/archive/2008/04/19/2306153.aspx