把gridview数据导出到Excel文件中

1,#region 设置EXCEL格式
        /// <summary>
        /// 设置EXCEL自动格式
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="nRowIndex"></param>
        private static void SetWrap(Excel.Worksheet sheet, int nRowIndex)
        {
            for (int i = 1; i <= 4; i++)
            {
                Excel.Range range = sheet.Cells[nRowIndex, i] as Excel.Range;
                //垂直居上
                range.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
                //水平左对其
                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                //自动换行
                range.WrapText = true;
            }
        }
        #endregion

2,#region 打印gridview数据
        /// <summary>
        /// 打印gridview数据
        /// </summary>
        /// <param name="grid"></param>
        /// <param name="fileName"></param>
        /// <param name="print"></param>
        /// <returns></returns>
        public static string ExportExcel(DataGridView grid, string fileName, bool print)
        {
            string strReturn = String.Empty;

            Excel.Application excelApp = null;
            Excel.Workbook workBook = null;
            Excel.Worksheet ws = null;
            Excel.Range range = null;
            Excel.Worksheet sheet = null;

            try
            {
                //一行header,一行空行间隔, +2
                int rowCount = grid.Rows.Count + 2;
                //最后一列为隐藏列,不导出和打印
                int colCount = grid.Columns.Count - 1;
                string[,] arr = new string[rowCount, colCount];
                for (int i = 0; i < rowCount; i++)
                {
                    if (i == 0)
                    {
                        for (int j = 0; j < colCount; j++)
                        {
                            arr[i, j] = grid.Columns[j].HeaderText;
                        }
                    }
                    else if (i > 1)
                    {
                        for (int j = 0; j < colCount; j++)
                        {
                            arr[i, j] = grid.Rows[i - 2].Cells[j].Value.ToString();
                        }
                    }
                }

                excelApp = new Microsoft.Office.Interop.Excel.Application();
                workBook = excelApp.Workbooks.Add(Missing.Value);
                sheet = workBook.ActiveSheet as Excel.Worksheet;
                ws = excelApp.Workbooks[1].Worksheets[1] as Excel.Worksheet;
                range = ws.get_Range(ws.Cells[1, 1], ws.Cells[rowCount, colCount]);
                range.Value2 = arr;

                ws.get_Range(ws.Cells[1, 1], ws.Cells[1, colCount]).Font.Bold = true;

                //列宽
                excelApp.Columns.ColumnWidth = 19;
                excelApp.Columns.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
                excelApp.Columns.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                excelApp.Columns.WrapText = true;
                excelApp.Columns.Font.Size = 11;

                //Excel.Range headRange = excelApp.Rows[1, 1] as Excel.Range;
                //headRange.RowHeight = 28;
                //headRange.Font.Name = "宋体";
                //headRange.Font.Size = 12;
                //headRange.Font.Bold = true;
                //headRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

                workBook.SaveAs(fileName, Missing.Value, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, ConflictOption.OverwriteChanges, null, null, null, null);
                if (print)
                {
                    excelApp.Visible = true;
                    //sheet.PrintPreview(Missing.Value);
                    excelApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show(Missing.Value, Missing.Value,
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                        Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                }
            }
            catch (Exception ex)
            {
                strReturn = ex.Message;
            }
            finally
            {
                workBook.Close(false, Missing.Value, Missing.Value);
                excelApp.Quit();
            }
            return strReturn;
        }
        #endregion

       

原文地址:https://www.cnblogs.com/tangtang615/p/1407236.html