C#中將ListView中數據導出到Excel

首先 你須要添加引用Microsoft Excel 11.0 Object Library

添加方法:選擇項目->引用->右擊「添加引用」->選擇COM 找到上面組件—>點擊「肯定」。

using System.Reflection; // 引用這個才能使用Missing字段 

實現代碼以下:

private void 導出數據_Click(object sender, EventArgs e)
{
    ExportToExecl();
}

/// <summary>
/// 執行導出數據
/// </summary>
public void ExportToExecl()
{
    System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog();
    sfd.DefaultExt = "xls";
    sfd.Filter = "Excel文件(*.xls)|*.xls";
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        DoExport(this.lstPostion, sfd.FileName);
    }
}
/// <summary>
/// 具體導出的方法
/// </summary>
/// <param name="listView">ListView</param>
/// <param name="strFileName">導出到的文件名</param>
private void DoExport(ListView listView, string strFileName)
{
    int rowNum = listView.Items.Count;
    int columnNum = listView.Items[0].SubItems.Count;
    int rowIndex = 1;
    int columnIndex = 0;
    if (rowNum == 0 || string.IsNullOrEmpty(strFileName))
    {
        return;
    }
    if (rowNum > 0)
    {

        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
        if (xlApp == null)
        {
            MessageBox.Show("沒法建立excel對象,可能您的系統沒有安裝excel");
            return;
        }
        xlApp.DefaultFilePath = "";
        xlApp.DisplayAlerts = true;
        xlApp.SheetsInNewWorkbook = 1;
        Microsoft.Office.Interop.Excel.Workbook xlBook = xlApp.Workbooks.Add(true);
        //將ListView的列名導入Excel表第一行
        foreach (ColumnHeader dc in listView.Columns)
        {
            columnIndex++;
            xlApp.Cells[rowIndex, columnIndex] = dc.Text;
        }
        //將ListView中的數據導入Excel中
        for (int i = 0; i < rowNum; i++)
        {
            rowIndex++;
            columnIndex = 0;
            for (int j = 0; j < columnNum; j++)
            {
                columnIndex++;
                //注意這個在導出的時候加了「\t」 的目的就是避免導出的數據顯示爲科學計數法。能夠放在每行的首尾。
                xlApp.Cells[rowIndex, columnIndex] = Convert.ToString(listView.Items[i].SubItems[j].Text) + "\t";
            }
        }
        //例外須要說明的是用strFileName,Excel.XlFileFormat.xlExcel9795保存方式時 當你的Excel版本不是9五、97 而是200三、2007 時導出的時候會報一個錯誤:異常來自 HRESULT:0x800A03EC。 解決辦法就是換成strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal。
        xlBook.SaveAs(strFileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        xlApp = null;
        xlBook = null;
        MessageBox.Show("OK");
    }
}
相關文章
相關標籤/搜索