zoukankan      html  css  js  c++  java
  • DataGridView导出excel/xml

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Data;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Excel;
    
    namespace AssetsManage.Operation
    {
        class Export
        {
            private static System.Windows.Forms.DataGridView gridView;
            private static System.Windows.Forms.ToolStripProgressBar  toolStripProgressBar1;
            private static Timer time;
            private static DataSet objSet = new DataSet();
            private static SaveFileDialog saveFileDialog = new SaveFileDialog();
            private static SaveFileDialog saveFileDialog2 = new SaveFileDialog();
    
    
            public static System.Windows.Forms.DataGridView _gridView
            {
                get { return gridView; }
                set { gridView = value;}
            }
            public static System.Windows.Forms.ToolStripProgressBar _toolStripProgressBar1
            {
                get { return toolStripProgressBar1; }
                set { toolStripProgressBar1 = value;}
            }
            public static Timer _time
            {
                get { return time; }
                set { time = value;}
            }
            public static DataSet _objSet
            {
                get { return objSet; }
                set { objSet.Clear(); objSet = value; }
            }
    
            //导出当前页DataGridView中的数据到EXcel中
            public static void ExportTOExcel()
            {
                if (gridView.Rows.Count == 0)
                {
                    MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
                    saveFileDialog.FilterIndex = 0;
                    saveFileDialog.RestoreDirectory = true;
                    saveFileDialog.CreatePrompt = true;
                    saveFileDialog.Title = "导出文件保存路径";
                    saveFileDialog.ShowDialog();
                    string strName = saveFileDialog.FileName;
                    if (strName.Length != 0)
                    {
                        toolStripProgressBar1.Visible = true;
                        System.Reflection.Missing miss = System.Reflection.Missing.Value;
                        Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
                        excel.Application.Workbooks.Add(true); ;
                        excel.Visible = false;//若是true,则在导出的时候会显示EXcel界面。
                        if (excel == null)
                        {
                            MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                        Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
                        Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
                        Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
                        sheet.Name = "test";
    
                        //生成字段名称
                        for (int i = 0; i < gridView.ColumnCount; i++)
                        {
                            excel.Cells[1, i + 1] = gridView.Columns[i].HeaderText.ToString();
                        }
                        //填充数据
                        for (int i = 0; i < gridView.RowCount - 1; i++)
                        {
                            for (int j = 0; j < gridView.ColumnCount; j++)
                            {
                                if (gridView[j, i].Value == typeof(string))
                                {
                                    excel.Cells[i + 2, j + 1] = "" + gridView[i, j].Value.ToString();
                                }
                                else
                                {
                                    excel.Cells[i + 2, j + 1] = gridView[j, i].Value.ToString();
                                }
                            }
                            toolStripProgressBar1.Value += 100 / gridView.RowCount;
                        }
                        sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
                        book.Close(false, miss, miss);
                        books.Close();
                        excel.Quit();
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
                        GC.Collect();
                        MessageBox.Show("数据已经成功导出到:" + saveFileDialog.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        toolStripProgressBar1.Value = 0;
                        toolStripProgressBar1.Visible = false;
                    }
                }
            }
    
            //-------------------------------------------------------------------------------------------------------------------------------------
            //导出整个DataGridView中的数据到Excel中
            public static void ExportTOExcel2()
            {
                if (gridView.Rows.Count == 0)
                {
                    MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    saveFileDialog2.Filter = "Execl files (*.xls)|*.xls";
                    saveFileDialog2.FilterIndex = 0;
                    saveFileDialog2.RestoreDirectory = true;
                    //saveFileDialog2.CreatePrompt = true;
                    saveFileDialog2.Title = "导出文件保存路径";
                    saveFileDialog2.FileName = null;
                    saveFileDialog2.ShowDialog();
                    string FileName =  saveFileDialog2.FileName;
    
                    if (FileName.Length != 0)
                    {
                        toolStripProgressBar1.Visible = true;
                        System.Data.DataTable dt = objSet.Tables[0];
    
                        FileStream objFileStream;
                        StreamWriter objStreamWriter;
                        string strLine = "";
                        objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
                        objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
                        toolStripProgressBar1.Value = 0;
    
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            strLine = strLine + dt.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
    
                        }
                        objStreamWriter.WriteLine(strLine);
                        strLine = "";
    
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            strLine = strLine + (i + 1) + Convert.ToChar(9);
                            for (int j = 1; j < dt.Columns.Count; j++)
                            {
                                strLine = strLine + dt.Rows[i][j].ToString() + Convert.ToChar(9);
    
                            }
                            objStreamWriter.WriteLine(strLine);
                            toolStripProgressBar1.Value += 100 / dt.Rows.Count;
                            strLine = "";
                        }
                        objStreamWriter.Close();
                        objFileStream.Close();
                        MessageBox.Show("数据已经成功导出到:" + saveFileDialog2.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        toolStripProgressBar1.Value = 0;
                        toolStripProgressBar1.Visible = false;
                    }
                }
            }
    
            //————————————————————————————————————————————————————————————————————
            //导出到XML(整个数据源)
    
            public static void ExportTOXML()
            {
                if (gridView.Rows.Count == 0)
                {
                    MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    saveFileDialog2.Filter = "XML files (*.xml)|*.xml";
                    saveFileDialog2.FilterIndex = 0;
                    saveFileDialog2.RestoreDirectory = true;
                    //saveFileDialog2.CreatePrompt = true;
                    saveFileDialog2.Title = "导出文件保存路径";
                    saveFileDialog2.FileName = null;
                    saveFileDialog2.ShowDialog();
                    string FileName =  saveFileDialog2.FileName;
    
                    if (FileName.Length != 0)
                    {
                        toolStripProgressBar1.Visible = true;
                        objSet.WriteXml(saveFileDialog2.FileName.ToString());
                        for (int i = 0; i < objSet.Tables[0].Rows.Count; i++)
                        {
                            toolStripProgressBar1.Value += 100 / objSet.Tables[0].Rows.Count;
                        }
                        MessageBox.Show("数据已经成功导出到:" + saveFileDialog2.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        toolStripProgressBar1.Value = 0;
                        toolStripProgressBar1.Visible = false;
                    }
                }
            }
        }
    } 
  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/stragon/p/1628519.html
Copyright © 2011-2022 走看看