是GridView导出EXCEL吗?    

解决方案 »

  1.   

    从网上找到的,引用Excel库
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using Excel;namespace CSharpTest
    {
        public partial class FrmDgvToTiao : Form
        {
            public FrmDgvToTiao()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 改造原生成表的方法生成条试试
            /// </summary>
            /// <param name="gridView"></param>
            /// <param name="fileName"></param>
            /// <param name="isShowExcle"></param>
            /// <returns></returns>
            public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle)
            {
                //建立Excel对象
                //Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
                Excel.Application app = new Excel.Application();//上面语句原版,本环境中不对,改成本句可以了
                try
                {
                    if (app == null)
                    {
                        return false;
                    }                app.Visible = isShowExcle;
                    Workbooks workbooks = app.Workbooks;
                    _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                    Sheets sheets = workbook.Worksheets;
                    _Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
                    if (worksheet == null)
                    {
                        return false;
                    }
                    string sLen = "";
                    //取得最后一列列名
                    char H = (char)(64 + gridView.ColumnCount / 26);
                    char L = (char)(64 + gridView.ColumnCount % 26);
                    if (gridView.ColumnCount < 26)
                    {
                        sLen = L.ToString();
                    }
                    else
                    {
                        sLen = H.ToString() + L.ToString();
                    }
                    //标题
                    string sTmp = sLen + "1";
                    Range ranCaption = worksheet.get_Range(sTmp, "A1");
                    string[] asCaption = new string[gridView.ColumnCount];
                    for (int i = 0; i < gridView.ColumnCount; i++)
                    {
                        asCaption[i] = gridView.Columns[i].HeaderText;
                    }
                    ranCaption.Value2 = asCaption;
                    //数据
                    object[] obj = new object[gridView.Columns.Count];
                    for (int r = 0; r < gridView.RowCount - 1; r++)
                    {
                        for (int l = 0; l < gridView.Columns.Count; l++)
                        {
                            if (gridView[l, r].ValueType == typeof(DateTime))
                            {
                                obj[l] = gridView[l, r].Value.ToString();
                            }
                            else
                            {
                                obj[l] = gridView[l, r].Value;
                            }
                        }
                        string cell1 = sLen + ((int)(r + 2)).ToString();
                        string cell2 = "A" + ((int)(r + 2)).ToString();
                        Range ran = worksheet.get_Range(cell1, cell2);
                        ran.Value2 = obj;
                    }
                    //保存
                    workbook.SaveCopyAs(fileName);
                    workbook.Saved = true;
                }
                finally
                {
                    //关闭
                    app.UserControl = false;
                    app.Quit();
                }
                return true;
            }        private void FrmDgvToTiao_Load(object sender, EventArgs e)
            {
                string sql = "select * from jobs";
                this.dataGridView1.DataSource = DB.runSelect(sql);
            }        private void button1_Click(object sender, EventArgs e)
            {
                            //ExportForDataGridview(this.dataGridView1,"d:\\xxxaaabbb.xls",false);//返回一个bool值,可以接收,也可不接收,此以绝对路径
                //下行为相对路径写法以年月日时分秒来作为要导出的Excel文件名,保证不重复
                string pf = System.Windows.Forms.Application.StartupPath.Replace("bin\\Debug", "ExcelFile") + "\\" + DateTime.Now.ToString().Replace(":", "").Replace(" ", "").Replace("-", "") + ".xls";
                ExportForDataGridview(this.dataGridView1, pf, false);
                MessageBox.Show("导出成功!电子表格文件位置:"+pf);
                this.Close();
                this.Dispose();
            }
        }
    }
    或者你用一个MS表格,表格中带有导入到excel的功能,控制它的显隐
      

  2.   

    http://www.cnblogs.com/stswordman/archive/2006/08/24/485641.html
    GridView导出Excel研究