C#写一个从数据导出到Excel的表格
表名是Product
字段是u_Code(varchar(60)),u_Name(varchar(60)),Photo(图片数据类型image)
不要网页形式的我要C#窗口的那种容器是用的dataGridView1
要详细的代码,和步骤
网上拷贝的就不要了

解决方案 »

  1.   


    private void Export(string FileType, string FileName)
        {
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF7;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter sw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            this.GridView1.RenderControl(hw);
            Response.Write(sw.ToString());
            Response.End();
        }
    asp.net的 winfrom 没试过
      

  2.   

    /// <summary>
            /// 导出页面成Excel
            /// </summary>
            /// <param name="ctl"></param>
            /// <param name="Charset"></param>
            public void DGToExcel(System.Web.UI.Control ctl, string Charset)
            {
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
                HttpContext.Current.Response.Charset = Charset == "" ? "UTF-8" : Charset;
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                ctl.Page.EnableViewState = false;
                System.IO.StringWriter tw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
                ctl.RenderControl(hw);
                HttpContext.Current.Response.Write(tw.ToString());
                HttpContext.Current.Response.End();
            }
      

  3.   


    /// <summary>
    /// 导出到Excel文档(说明一下这种导出Excel可以正常打开和编辑,但是其格式是文本格式)
    /// </summary>
    /// <param name="dtTable">导出的DataTable</param>
    /// <param name="strExcelFilePath">Excel文件名</param>
    /// <param name="bOverWrite">Excel文件名</param>
    public static void ExportToExcelText(DataTable dtTable,string strExcelFilePath,bool bOverWrite)
    {
    try
    {
    FileInfo fi = new FileInfo(strExcelFilePath);
    if(fi.Exists && !bOverWrite)
    {
    throw new Exception("同名文件已存在,无法重写!");
    }

    int i = 0;
    int k = 0;
    string strTemp          = null;
    StreamWriter sw         = new StreamWriter(strExcelFilePath);
    foreach(DataColumn dc in dtTable.Columns)
    {
    strTemp += dc.ColumnName + "\t";
    }
    sw.WriteLine(strTemp);

    for(i = 0; i < dtTable.Rows.Count; i++)
    {
    strTemp = "";
    for(k = 0; k < dtTable.Columns.Count; k++)
    {
    strTemp += string.Format("{0}\t",dtTable.Rows[i][k]);
    }
    sw.WriteLine(strTemp);
    }
    sw.Flush();
    sw.Close();
    }
    catch(Exception me)
    {
    throw new Exception("写入Excel文档失败!" + me.Message);
    }
            }
      

  4.   

    还有另一种方法利用=Microsoft.Jet.OLEDB.4.0打开Excel文件,对该文件执行insert into 语句。
    网上有第三方类库,可以在不安装Excel的情况下导出Excel文件,很好很强大,我用过
      

  5.   

      //绑定数据
            private void BindData(string sql)
            {
                SqlConnection conn = new SqlConnection("uid=sa;pwd=123456;server=(local);database=myoffice;max pool size=10000;");
                conn.Open();
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                DataSet ds=new DataSet();
                da.Fill(ds,"pers");
                dataGridView1.DataSource = ds.Tables["pers"];
                ds.Dispose();
                conn.Close();
            }
           
            private void Form1_Load(object sender, EventArgs e)
            {
                BindData("select *from pers");
            }         //导出数据到Excel
            private void button3_Click(object sender, EventArgs e)
            {
                SaveAs();
            }        private void SaveAs() //另存新档按钮   导出成Excel
            {
                  SaveFileDialog saveFileDialog = new SaveFileDialog();
                  saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
                  saveFileDialog.FilterIndex = 0;
                  saveFileDialog.RestoreDirectory = true;
                  saveFileDialog.CreatePrompt = true;
                  saveFileDialog.Title = "Export Excel File To"; 
                  saveFileDialog.ShowDialog();
                  Stream myStream;
                  myStream = saveFileDialog.OpenFile();
                  //StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                  StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
                  string str = "";
                  try
                   {
                      //写标题
                       for (int i = 0; i < dataGridView1.ColumnCount; i++)
                       {
                          if (i > 0)
                           {
                              str += "\t";
                            }
                          str += dataGridView1.Columns[i].HeaderText;
                      }
                      sw.WriteLine(str);
                      //写内容
                      for (int j = 0; j < dataGridView1.Rows.Count; j++)
                       {
                          string tempStr = "";
                          for (int k = 0; k < dataGridView1.Columns.Count; k++)
                           {
                              if (k > 0)
                              {
                                    tempStr += "\t";
                              }
                              tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
                          }
                          sw.WriteLine(tempStr);                    
                      }
                      sw.Close();
                     myStream.Close();
                 }
                 catch (Exception e)
                 {
                     MessageBox.Show(e.ToString());
                 }
                 finally
                 {
                     sw.Close();
                     myStream.Close();
                 }           
           }
      

  6.   

    代码应该是自己写的,但是我把代码弄进去了,好像有报错Sqlconnection,SqlDateAdapter,Stream,StreamWriter这几个都是未能找到类型或命名空间是要引入命名空间吗?还有我要取的是三个字段其中一个有图片,都要导出到Excel还有导入,需要导入什么引用吗?可以加好友详细告诉我吗?
      

  7.   


    using System.IO;                               // Stream等
    using System.Data.SqlClient;            // SqlConnection等
      

  8.   

    这东西很常用,我也经常在找这方面的代码,还是CSDN好。Mark!
      

  9.   

    你们能给我找个第三方的类库吗?
    我对这方面不是很了解,链接地址也可以,最近等的很急,还有我的数据库账号是sa密码是没有的,数据库名UFdemo,服务器是 lanxinGG怎么写数据库的连接,
    注意是在C#里不要ASP.NET的代码,是winfrom 
    我能雕饰成功并且能生成成功导出文件呢和导入文件的话,就给分甚至加分
      

  10.   

    我写的将一个DataTable转成excel
    http://download.csdn.net/source/2997557但你在dataGridView1上的改动要反映到DataTable里面去NPOI
    http://www.cnblogs.com/tonyqus/category/182110.html
      

  11.   

    如果你用farpoint.fpspread控件的话,
    只要一行就搞定
      

  12.   

    看到你的数据中有个图片类型的格式。
    这个东西,就只能使用excel处理了。
    在C#中加载Office的dotnet类库。
    在网上找一段代码写入没有问题吧。
    带图片的excel导入和导出,让人无语....
      

  13.   

    我用的dataGridView展示数据,需要单击一个按钮导出到Excel,然候点导入按钮把数据导入到数据库,就是这样,然后有一个字段是图片,能给个好的建议个方法吗?如果直接给详细步骤的话,我就直接给分
      

  14.   

    很好很强大 学习下 话说我之前看过office内嵌winform 使用的一个demo 做的不错