在C#WinForm程序中,首先加载EXCEL模板,然后利用程序筛选出数据,写入到EXCEL中;请问有相关的例子或举例说明下吗?

解决方案 »

  1.   

    自定义一个将DataGridView控件中数据导出到Excel函数  
    /// <summary>
      /// 将DataGridView控件中数据导出到Excel
      /// </summary>
      /// <param name="gridView">DataGridView对象</param>
      /// <param name="isShowExcle">是否显示Excel界面</param>
      /// <returns></returns>
      public bool ExportDataGridview(DataGridView gridView,bool isShowExcle)
      {
      if (gridView.Rows.Count == 0)
      return false;
      //建立Excel对象
      Excel.Application excel = new Excel.Application();
      excel.Application.Workbooks.Add(true);
      excel.Visible = isShowExcle;
      //生成字段名称
      for (int i = 0; i < gridView.ColumnCount; i++)
      {
      excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText;
      }
      //填充数据
      for (int i = 0; i < gridView.RowCount-1; i++)
      {
      for (int j = 0; j < gridView.ColumnCount; j++)
      {
      if (gridView[j, i].ValueType == typeof(string))
      {
      excel.Cells[i + 2, j + 1] = "'" + gridView[j, i].Value.ToString();
      }
      else
      {
      excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
      }
      }
      }
      return true;
      }
      

  2.   

    dataset 过滤数据
    打开excel赋值http://topic.csdn.net/u/20081205/09/34b7b148-8dae-45b7-890e-9a079240be37.html
      

  3.   

    public void CreateExcel(DataTable dt, string FileName)
            {
                HttpResponse resp;
                resp = Page.Response;
                resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
                string colHeaders = "", ls_item = "";
                int i = 0;
                //定义表对象和行对像,同时用DataSet对其值进行初始化 
                DataRow[] myRow = dt.Select("");
                //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
                for (i =0; i < dt.Columns.Count; i++)
                {
                    switch (i)
                    {
                        case 0: colHeaders += "编号" + "\t"; break;
                        case 1: colHeaders += "属地" + "\t"; break;
                        case 2: colHeaders += "团队名称" + "\t"; break;
                        case 3: colHeaders += "客户经理" + "\t"; break;
                        case 4: colHeaders += "小区名称" + "\t"; break;
                        case 5: colHeaders += "物管名称/街办" + "\t"; break;
                        case 6: colHeaders += "管理形式" + "\t"; break;
                        case 7: colHeaders += "楼房栋数" + "\t"; break;
                        case 8: colHeaders += "楼房套数" + "\t"; break;
                        case 9: colHeaders += "实际入住数" + "\t"; break;
                        case 10: colHeaders += "电信网点" + "\t"; break;
                        case 11: colHeaders += "移动网点" + "\t"; break;
                        case 12: colHeaders += "联通网点" + "\t"; break;
                        case 13: colHeaders += "铁通网点" + "\t"; break;
                        case 14: colHeaders += "长宽网点" + "\t"; break;
                        case 15: colHeaders += "其他网点" + "\t"; break;
                        case 16: colHeaders += "电信进线情况" + "\t"; break;
                        case 17: colHeaders += "我品信息(手机)" + "\t"; break;
                        case 18: colHeaders += "我品信息(宽带)" + "\t"; break;
                        case 19: colHeaders += "我品信息(固话)" + "\t"; break;
                        case 20: colHeaders += "竞品信息(手机)" + "\t"; break;
                        case 21: colHeaders += "竞品信息(宽带)" + "\t"; break;
                        case 22: colHeaders += "竞品信息(固话)" + "\n"; break;
                    }
                }
                //向HTTP输出流中写入取得的数据信息 
                resp.Write(colHeaders);
                //逐行处理数据 
                foreach (DataRow row in myRow)
                {
                    //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
                    for (i = 0; i < dt.Columns.Count; i++)
                    {                    if (i == dt.Columns.Count - 1)
                        {
                            ls_item += row[i].ToString() + "\n";
                        }
                        else
                        {
                            ls_item += row[i].ToString() + "\t";
                        }
                    }
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
                    resp.Write(ls_item);
                    ls_item = "";
                }
                //写缓冲区中的数据到HTTP头文档中 
                resp.End();
            }
    这是我之前写的一个 你可以参考一下
      

  4.   

    可以将Excel 嵌入进来!
    http://www.cnblogs.com/jinglelin/archive/2007/07/31/837722.html
      

  5.   

    http://www.cnblogs.com/zhangqifeng/archive/2009/06/10/1500537.html
    可以看一下这网页
      

  6.   

                string[] aList = name.Split(new char[] { ',' });
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
                StringBuilder sb = new StringBuilder();
                foreach (InternalStock stock in list)
                {
                    for (int i = 0; i < aList.Length; i++)
                    {
                        if (aList[i] == "model")
                        {
                            sb.Append(stock.Model.Trim());
                            sb.Append(",");
                        }
                        else if (aList[i] == "Factory")
                        {
                            sb.Append(stock.Factory != null ? stock.Factory.Trim() : "");
                            sb.Append(",");
                        }
                        else if (aList[i] == "Package")
                        {
                            sb.Append(stock.Package != null ? stock.Package.Trim() : "");
                            sb.Append(",");
                        }
                        else if (aList[i] == "Lotnum")
                        {
                            sb.Append(stock.Lotnum != null ? stock.Lotnum.Trim() : "");
                            sb.Append(",");
                        }
                    }
                    sb.Append("\n");
                }            string temp = string.Format("attachment;filename={0}", fileName);
                Response.Charset = "GB2312";
                Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.ClearHeaders();
                Response.AppendHeader("Content-disposition", temp);
                Response.Write(sb);
                Response.End();
      

  7.   

            private void toolStripButton3_Click(object sender, EventArgs e)
            {
                if (dataGridView1.RowCount > 1)
                {
                    SaveFileDialog saveFileDialog = new SaveFileDialog(); //Windows 窗体 SaveFileDialog 组件是一个预先配置的对话框。它与 Windows 使用的标准“保存文件”对话框相同                saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; //获取或设置筛选器字符串,该字符串确定在 SaveFileDialog 中显示的文件类型                saveFileDialog.FilterIndex = 0; //索引                saveFileDialog.RestoreDirectory = true;//获取或设置一个值,该值使文件对话框将其当前目录还原为用户更改目录以搜索文件之前的初始值                saveFileDialog.CreatePrompt = true;//获取或设置一个值,该值指示如果用户指定一个不存在的文件,SaveFileDialog 是否提示用户以允许创建文件                saveFileDialog.Title = "Export Excel File To"; //获取或设置在文件对话框的标题栏中显示的文本
                    //saveFileDialog.ShowDialog();// 显示预置对话框
                    Stream myStream;//提供字节序列的一般视图,命名空间:  System.IO
                    if (DialogResult.OK == saveFileDialog.ShowDialog())
                    {
                        //表示用户正确指定了文件,
                        //你的代码                    myStream = saveFileDialog.OpenFile();//为用户使用 SaveFileDialog 选定的文件名创建读/写文件流                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(0));//用指定的编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的新实例                    string str = "";                    try
                        {                        //写标题                        for (int i = 0; i < dataGridView1.ColumnCount; i++)
                            {                            if (i > 0)
                                {                                str = str + "\t";                            }                            str = 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";   // 间隔字符                                }
                                    if (dataGridView1.Rows[j].Cells[k].Value == null)
                                    {
                                        tempStr += "";
                                    }
                                    else
                                    {                                    tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString().Trim();
                                    }
                                    
                                }                            sw.WriteLine(tempStr);                        }                        sw.Close();                        myStream.Close();                        MessageBox.Show("导入完成!");                    }                    catch (Exception E)
                        {
                            MessageBox.Show(E.ToString());
                            
                        }
                        finally
                        {
                            sw.Dispose();
                            sw.Close();
                            myStream.Dispose();
                            myStream.Close();
                        }
                    }
                }
                else
                {
                    
                    MessageBox.Show("没有数据可以导出!", "提示");
                }
            }