当前位置:编程学习 > C#/ASP.NET >>

C#写一个从数据导出到Excel的表格

C#写一个从数据导出到Excel的表格
表名是Product
字段是u_Code(varchar(60)),u_Name(varchar(60)),Photo(图片数据类型image)
不要网页形式的我要C#窗口的那种

容器是用的dataGridView1
要详细的代码,和步骤
网上拷贝的就不要了 --------------------编程问答--------------------

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 没试过 --------------------编程问答-------------------- 挺好的。 --------------------编程问答-------------------- /// <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();
        } --------------------编程问答-------------------- 学习   试验 试验 --------------------编程问答--------------------

/// <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);
}
        }

--------------------编程问答-------------------- 还有另一种方法利用=Microsoft.Jet.OLEDB.4.0打开Excel文件,对该文件执行insert into 语句。


网上有第三方类库,可以在不安装Excel的情况下导出Excel文件,很好很强大,我用过。。。 --------------------编程问答--------------------
 	//绑定数据
        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();
             }           
       }
--------------------编程问答-------------------- 代码应该是自己写的,但是我把代码弄进去了,好像有报错Sqlconnection,SqlDateAdapter,Stream,StreamWriter这几个都是未能找到类型或命名空间是要引入命名空间吗?还有我要取的是三个字段其中一个有图片,都要导出到Excel还有导入,需要导入什么引用吗?可以加好友详细告诉我吗? --------------------编程问答--------------------
引用 8 楼 lanxinww 的回复:
代码应该是自己写的,但是我把代码弄进去了,好像有报错Sqlconnection,SqlDateAdapter,Stream,StreamWriter这几个都是未能找到类型或命名空间是要引入命名空间吗?还有我要取的是三个字段其中一个有图片,都要导出到Excel还有导入,需要导入什么引用吗?可以加好友详细告诉我吗?


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

--------------------编程问答--------------------
引用 6 楼 isjoe 的回复:
还有另一种方法利用=Microsoft.Jet.OLEDB.4.0打开Excel文件,对该文件执行insert into 语句。


网上有第三方类库,可以在不安装Excel的情况下导出Excel文件,很好很强大,我用过。。。


支持,找一些成熟的类库,会节省很多事情. --------------------编程问答-------------------- 这东西很常用,我也经常在找这方面的代码,还是CSDN好。

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

但你在dataGridView1上的改动要反映到DataTable里面去

NPOI
http://www.cnblogs.com/tonyqus/category/182110.html --------------------编程问答-------------------- 如果你用farpoint.fpspread控件的话,
只要一行就搞定 --------------------编程问答-------------------- +1
引用 1 楼 summer16md 的回复:
C# code

private void Export(string FileType, string FileName)
    {
        Response.Charset = "GB2312";
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.AppendHea……
--------------------编程问答-------------------- 看到你的数据中有个图片类型的格式。
这个东西,就只能使用excel处理了。
在C#中加载Office的dotnet类库。
在网上找一段代码写入没有问题吧。
带图片的excel导入和导出,让人无语.... --------------------编程问答-------------------- 我用的dataGridView展示数据,需要单击一个按钮导出到Excel,然候点导入按钮把数据导入到数据库,就是这样,然后有一个字段是图片,能给个好的建议个方法吗?如果直接给详细步骤的话,我就直接给分 --------------------编程问答-------------------- 很好很强大 学习下 话说我之前看过office内嵌winform 使用的一个demo 做的不错
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,