zoukankan      html  css  js  c++  java
  • C#导出EXCEL的几种方法

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Windows.Forms;
    using System.Reflection;
    
    namespace DMS
    {
    /// <summary>
    /// C#操作Excel类
    /// </summary>
    class ExcelOperate
    {
    //法一
    //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;
    //    int columnNumber = dataTable.Columns.Count;
    
    //    if (rowNumber == 0)
    //    {
    //        MessageBox.Show("没有任何数据可以导入到Excel文件!");
    //        return false;
    //    }
    
    //    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    excel.Application.Workbooks.Add(true);
    //    excel.Visible = isShowExcle;//是否打开该Excel文件
    
    //    //填充数据
    //    for (int c = 0; c < rowNumber; c++)
    //    {
    //        for (int j = 0; j < columnNumber; j++)
    //        {
    //            excel.Cells[c + 1, j + 1] = dataTable.Rows[c].ItemArray[j];
    //        }
    //    }
    
    //    return true;
    //}
    
    
    //法二
    //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;
    
    //    int rowIndex = 1;
    //    int colIndex = 0;
    
    
    //    if (rowNumber == 0)
    //    {
    //        return false;
    //    }
    
    //    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    excel.Application.Workbooks.Add(true);
    //    excel.Visible = isShowExcle;
    
    //    //生成字段名称
    //    foreach (DataColumn col in dataTable.Columns)
    //    {
    //        colIndex++;
    //        excel.Cells[1, colIndex] = col.ColumnName;
    //    }
    
    //    //填充数据
    //    foreach (DataRow row in dataTable.Rows)
    //    {
    //        rowIndex++;
    //        colIndex = 0;
    //        foreach (DataColumn col in dataTable.Columns)
    //        {
    //            colIndex++;
    //            excel.Cells[rowIndex, colIndex] = row[col.ColumnName];
    //        }
    //    }
    
    //    return true;
    //}
    
    //法三(速度最快)
    /// <summary>
    /// 将数据集中的数据导出到EXCEL文件
    /// </summary>
    /// <param name="dataSet">输入数据集</param>
    /// <param name="isShowExcle">是否显示该EXCEL文件</param>
    /// <returns></returns>
    public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    {
    DataTable dataTable = dataSet.Tables[0];
    int rowNumber = dataTable.Rows.Count;//不包括字段名
    int columnNumber = dataTable.Columns.Count;
    int colIndex = 0;
    
    if (rowNumber == 0) 
    {
    return false;
    }
    
    //建立Excel对象 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //excel.Application.Workbooks.Add(true);
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    excel.Visible = isShowExcle;
    //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
    Microsoft.Office.Interop.Excel.Range range;
    
    //生成字段名称 
    foreach (DataColumn col in dataTable.Columns)
    {
    colIndex++;
    excel.Cells[1, colIndex] = col.ColumnName;
    }
    
    object[,] objData = new object[rowNumber, columnNumber]; 
    
    for (int r = 0; r < rowNumber; r++) 
    {
    for (int c = 0; c < columnNumber; c++)
    {
    objData[r, c] = dataTable.Rows[r][c];
    }
    //Application.DoEvents();
    }
    
    // 写入Excel 
    range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
    //range.NumberFormat = "@";//设置单元格为文本格式
    range.Value2 = objData;
    worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";
    
    return true; 
    }
    
    //法四
    //public bool DataSetToExcel(DataSet dataSet, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;
    //    int columnNumber = dataTable.Columns.Count;
    //    String stringBuffer = "";
    
    //    if (rowNumber == 0)
    //    {
    //        MessageBox.Show("没有任何数据可以导入到Excel文件!");
    //        return false;
    //    }
    
    //    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    excel.Application.Workbooks.Add(true);
    //    excel.Visible = isShowExcle;//是否打开该Excel文件
    
    //    //填充数据
    //    for (int i = 0; i < rowNumber; i++)
    //    {
    //        for (int j = 0; j < columnNumber; j++)
    //        {
    //            stringBuffer += dataTable.Rows[i].ItemArray[j].ToString();
    //            if (j < columnNumber - 1)
    //            {
    //                stringBuffer += "	";
    //            }
    //        }
    //        stringBuffer += "
    ";
    //    }
    //    Clipboard.Clear();
    //    Clipboard.SetDataObject(stringBuffer);
    //    ((Microsoft.Office.Interop.Excel.Range)excel.Cells[1, 1]).Select();
    //    ((Microsoft.Office.Interop.Excel.Worksheet)excel.ActiveWorkbook.ActiveSheet).Paste(Missing.Value, Missing.Value);
    //    Clipboard.Clear();
    
    //    return true;
    //}
    
    //public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;
    //    int columnNumber = dataTable.Columns.Count;
    
    //    if (rowNumber == 0)
    //    {
    //        MessageBox.Show("没有任何数据可以导入到Excel文件!");
    //        return false;
    //    }
    
    //    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    Microsoft.Office.Interop.Excel.Workbook workBook = excel.Application.Workbooks.Add(true);
    //    excel.Visible = false;//是否打开该Excel文件
    
    //    //填充数据
    //    for (int i = 0; i < rowNumber; i++)
    //    {
    //        for (int j = 0; j < columnNumber; j++)
    //        {
    //            excel.Cells[i + 1, j + 1] = dataTable.Rows[i].ItemArray[j];
    //        }
    //    }
    
    //    //string fileName = path + "\" + DateTime.Now.ToString().Replace(':', '_') + ".xls";
    //    workBook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    
    //    try
    //    {
    //        workBook.Saved = true;
    //        excel.UserControl = false;
    //        //excelapp.Quit();
    //    }
    //    catch (Exception exception)
    //    {
    //        MessageBox.Show(exception.Message);
    //    }
    //    finally
    //    {
    //        workBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
    //        excel.Quit();
    //    }
    
    //    if (isShowExcle)
    //    {
    //        System.Diagnostics.Process.Start(fileName);
    //    }
    //    return true;
    //}
    
    //public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
    //{
    //    DataTable dataTable = dataSet.Tables[0];
    //    int rowNumber = dataTable.Rows.Count;//不包括字段名
    //    int columnNumber = dataTable.Columns.Count;
    //    int colIndex = 0;
    
    //    if (rowNumber == 0)
    //    {
    //        MessageBox.Show("没有任何数据可以导入到Excel文件!");
    //        return false;
    //    }
    
    //    //建立Excel对象
    //    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //    //excel.Application.Workbooks.Add(true);
    //    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    //    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    //    excel.Visible = isShowExcle;
    //    //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
    //    worksheet.Name = "挠度数据";
    //    Microsoft.Office.Interop.Excel.Range range;
    
    //    //生成字段名称
    //    foreach (DataColumn col in dataTable.Columns)
    //    {
    //        colIndex++;
    //        excel.Cells[1, colIndex] = col.ColumnName;
    //    }
    
    //    object[,] objData = new object[rowNumber, columnNumber];
    
    //    for (int r = 0; r < rowNumber; r++)
    //    {
    //        for (int c = 0; c < columnNumber; c++)
    //        {
    //            objData[r, c] = dataTable.Rows[r][c];
    //        }
    //        //Application.DoEvents();
    //    }
    
    //    // 写入Excel
    //    range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
    //    //range.NumberFormat = "@";//设置单元格为文本格式
    //    range.Value2 = objData;
    //    worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";
    
    //    //string fileName = path + "\" + DateTime.Now.ToString().Replace(':', '_') + ".xls";
    //    workbook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    
    //    try
    //    {
    //        workbook.Saved = true;
    //        excel.UserControl = false;
    //        //excelapp.Quit();
    //    }
    //    catch (Exception exception)
    //    {
    //        MessageBox.Show(exception.Message);
    //    }
    //    finally
    //    {
    //        workbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
    //        excel.Quit();
    //    }
    
    //    //if (isShowExcle)
    //    //{
    //    //    System.Diagnostics.Process.Start(fileName);
    //    //}
    //    return true;
    //}
    
    /// <summary>
    /// 将数据集中的数据保存到EXCEL文件
    /// </summary>
    /// <param name="dataSet">输入数据集</param>
    /// <param name="fileName">保存EXCEL文件的绝对路径名</param>
    /// <param name="isShowExcle">是否打开EXCEL文件</param>
    /// <returns></returns>
    public bool DataSetToExcel(DataSet dataSet, string fileName, bool isShowExcle)
    {
    DataTable dataTable = dataSet.Tables[0];
    int rowNumber = dataTable.Rows.Count;//不包括字段名
    int columnNumber = dataTable.Columns.Count;
    int colIndex = 0;
    
    if (rowNumber == 0) 
    {
    MessageBox.Show("没有任何数据可以导入到Excel文件!");
    return false;
    }
    
    //建立Excel对象 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
    //excel.Application.Workbooks.Add(true);
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    excel.Visible = false;
    //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1];
    Microsoft.Office.Interop.Excel.Range range;
    
    //生成字段名称 
    foreach (DataColumn col in dataTable.Columns)
    {
    colIndex++;
    excel.Cells[1, colIndex] = col.ColumnName;
    }
    
    object[,] objData = new object[rowNumber, columnNumber]; 
    
    for (int r = 0; r < rowNumber; r++) 
    {
    for (int c = 0; c < columnNumber; c++)
    {
    objData[r, c] = dataTable.Rows[r][c];
    }
    //Application.DoEvents();
    }
    
    // 写入Excel 
    range = worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]);
    //range.NumberFormat = "@";//设置单元格为文本格式
    range.Value2 = objData;
    worksheet.get_Range(excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]).NumberFormat = "yyyy-m-d h:mm";
    
    //string fileName = path + "\" + DateTime.Now.ToString().Replace(':', '_') + ".xls"; 
    workbook.SaveAs(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
    
    try 
    {
    workbook.Saved = true;
    excel.UserControl = false;
    //excelapp.Quit();
    }
    catch (Exception exception)
    {
    MessageBox.Show(exception.Message);
    }
    finally
    {
    workbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, Missing.Value, Missing.Value);
    excel.Quit();
    }
    
    if (isShowExcle) 
    {
    System.Diagnostics.Process.Start(fileName);
    }
    return true;
    }
    }
    } 
  • 相关阅读:
    jsonp跨域
    angular总结控制器的三种主要职责: 为应用中的模型设置初始状态 通过$scope对象把数据模型或函数行为暴露给视图 监视模型的变化,做出相应的动作
    url解析
    waterfall.js
    ES6
    前端代码规范
    秒杀倒计时功能实现
    怎样正确写网站title、keywords、description比较标准。
    CSS3动画
    Python3基础 父,子类普通方法重名 子类方法覆盖父类方法
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/5323972.html
Copyright © 2011-2022 走看看