zoukankan      html  css  js  c++  java
  • c# datagridview导出到excel

    添加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;

            }


    方法2

    用流保存成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();

                }          

          }

  • 相关阅读:
    乘电梯(动规+单调队列队头优化)
    贪心基础题目整理
    动规基础方程整理
    [第一波模拟day3T3]{益智游戏}(game.cpp)
    [第一波模拟day3T2]{独立集}(bubble.cpp)
    [第一波模拟day1T2]{分班}(divide.cpp)
    考前模版整理
    [Noip2004][Day ?][T?]合并果子(?.cpp)
    [Noip2017][Day 1][T1]玩具谜题(toy.cpp)
    新开始?
  • 原文地址:https://www.cnblogs.com/lzjsky/p/2013767.html
Copyright © 2011-2022 走看看