zoukankan      html  css  js  c++  java
  • # datagridview导出到excel【转载】

    # datagridview导出到excel【转载】
    http://hi.baidu.com/weizier/blog/item/8212caea1123b4d6d439c9fe.html

    方法一:添加dll引用

    右击选择你所在的项目的“引用”,选择“添加引用”。

    弹出“添加引用”对话框。

    选择“COM”选项卡。

    选择“Microsoft Excel 11.0 Object Library”

    单击“确定”按钮。

    代码

    public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle)
            {

                //建立Excel对象

                Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.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;

            }


    方法二

    用流保存成xls文件. 这种方法比较好,不用引用Excel组件.   下面是具体例子,可以参考

    using System.IO;

           

            /// <summary>

            /// 另存新档按钮

            /// </summary>

            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 < dgvAgeWeekSex.ColumnCount; i++)

                    {

                        if (i > 0)

                        {

                            str += "/t" ;

                        }

                        str += dgvAgeWeekSex.Columns[i].HeaderText;

                    }

                    sw.WriteLine(str);

                    // 写内容

                    for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++)

                    {

                        string tempStr = "" ;

                        for (int k = 0; k < dgvAgeWeekSex.Columns.Count; k++)

                        {

                            if (k > 0)

                            {

                                tempStr += "/t" ;

                            }

                            tempStr += dgvAgeWeekSex.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();

                }          

           }

  • 相关阅读:
    Python基础教程之第2章 列表和元组
    java最简单的方式实现httpget和httppost请求
    90后女生微信销售案例:预热和成熟
    window.onload与$.ready的差别
    在delphi下TClientSocket的使用技巧 转
    delphi安装 Tclientsocket, Tserversocket控件
    DELPHI SOKET 编程(使用TServerSocket和TClientSocket) 转
    Delphi ServerSocket,ClientSocket示例
    Delphi Socket 阻塞线程下为什么不触发OnRead和OnWrite事件
    delphi TServerSocket阻塞线程单元 实例
  • 原文地址:https://www.cnblogs.com/cyun/p/5565496.html
Copyright © 2011-2022 走看看