C#中把當前顯示的datagridview中的數據以excel的形式導出

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using Microsoft.Office;
private void SaveFile_Click(object sender, EventArgs e)
{
    try
    {
        #region   驗證可操作性
        //申明保存對話框  
        SaveFileDialog dlg = new SaveFileDialog();
        //默然文件後綴  
        dlg.DefaultExt = "xls ";
        //以當前時間作爲默認文件名
        dlg.FileName = DateTime.Now.ToString("yyyymmddhhmmss") + "CustomerData";
        //文件後綴列表  
        dlg.Filter = "EXCEL文件(*.XLS)|*.xls ";
        //默然路徑是系統當前路徑  
        dlg.InitialDirectory = "D:/";
        //打開保存對話框  
        if (dlg.ShowDialog() == DialogResult.Cancel) return;
        //返回文件路徑  
        string fileNameString = dlg.FileName;
        //驗證strFileName是否爲空或值無效  
        if (fileNameString.Trim() == " ")
        { return; }
        //定義表格內數據的行數和列數  
        int rowscount = dataGridView1.Rows.Count;
        int colscount = dataGridView1.Columns.Count;
        //行數必須大於0  
        if (rowscount <= 0)
        {
            MessageBox.Show("沒有數據可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
        //列數必須大於0  
        if (colscount <= 0)
        {
            MessageBox.Show("沒有數據可供保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
        //行數不可以大於65536  
        if (rowscount > 65536)
        {
            MessageBox.Show("數據記錄數太多(最多不能超過65536條),不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
        //列數不可以大於255  
        if (colscount > 255)
        {
            MessageBox.Show("數據記錄行數太多,不能保存 ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
        #endregion
        Microsoft.Office.Interop.Excel.Application objExcel = null;
        Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;
        Microsoft.Office.Interop.Excel.Worksheet objsheet = null;
        try
        {
            //申明對象  
            objExcel = new Microsoft.Office.Interop.Excel.Application();
            objWorkbook = objExcel.Workbooks.Add(true);
            objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;
            //設置EXCEL不可見  
            objExcel.Visible = false;
            //向Excel中寫入表格的表頭  
            int displayColumnsCount = 1;
            for (int i = 0; i <= dataGridView1.ColumnCount - 1; i++)
            {
                if (dataGridView1.Columns[i].Visible == true)
                {
                    objExcel.Cells[1, displayColumnsCount] = dataGridView1.Columns[i].HeaderText.Trim();
                    displayColumnsCount++;
                }
            }
            //向Excel中逐行逐列寫入表格中的數據  
            for (int row = 0; row <= dataGridView1.RowCount - 1; row++)
            {
                displayColumnsCount = 1;
                for (int col = 0; col < colscount; col++)
                {
                    if (dataGridView1.Columns[col].Visible == true)
                    {
                        try
                        {
                            if (dataGridView1.Rows[row].Cells[col].Value != null)
                            {
                                objExcel.Cells[row + 2, displayColumnsCount] = "'" + dataGridView1.Rows[row].Cells[col].Value.ToString();
                            }
                            else
                            {
                                objExcel.Cells[row + 2, displayColumnsCount] = "";
                            }
                            displayColumnsCount++;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                    }
                }
            }
            //保存文件  
            objWorkbook.SaveAs(fileNameString, true, null, null, null,
                    null, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, true, true, true,
                    true, true);
            objExcel.Quit();
        }
        catch (Exception error)
        {
            MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "錯誤提示");
    }  
}

這個代碼大部分都可以很容易看懂,難點就是objWorkbook.SaveAs()這個函數,其實這個函數是一個縮寫,其完整格式爲:Microsoft.Office.Interop.Excel.Workbook.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local),其中第三個Password是設置打開excel時的密碼,不用時可寫null,WriteResPassword是當要編輯時的密碼,不用時寫null,ReadOnlyRecommended是設置只讀操作,不用時寫null,CreateBackup是啓動備份,當啓用時,一旦修改了excel,就會自動對先前的數據進行保存,不用時寫null。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章