`
羊小绵
  • 浏览: 52122 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

C#导出Excel

阅读更多
说明:实现从Datatable、Gridview数据导入到Excel文件中,(Excel文件是自己创建的,调用模板方法的请自行点击右上角X)

方法一:  从Datatable到Excel    

        /// <summary>
        /// 导出Excel的方法
        /// </summary>
        private void ExportExcel(DataTable mycsvdt)
        {
            if (mycsvdt == null || mycsvdt.Rows.Count < 0)
            {
                return;
            }
            bool fileSaved = false;
            SaveFileDialog sfdSaveFile = new SaveFileDialog();
           
            //设置保存文件的格式
            sfdSaveFile.DefaultExt = "xlsx";
            //sfdSaveFile.DefaultExt = "xls";

            sfdSaveFile.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls";
            sfdSaveFile.FileName = string.Empty;
            if (sfdSaveFile.ShowDialog() != DialogResult.OK) return;

            //电脑Excel程序
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            if (xlApp == null)
            {
                MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel程序!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //Workbook集合
            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
            //Workbook
            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            //WorkSheet
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
 
            //写入字段列标题
            for (int i = 0; i < mycsvdt.Columns.Count; i++)
            {
                worksheet.Cells[1, i + 1] = mycsvdt.Columns[i].ColumnName;
            }
            //写入数值
            for (int r = 0; r < mycsvdt.Rows.Count; r++)
            {
                for (int i = 0; i < mycsvdt.Columns.Count; i++)
                {
                    worksheet.Cells[r + 2, i + 1] = mycsvdt.Rows[r][i];
                }
                System.Windows.Forms.Application.DoEvents();
            }

            worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
            //对指定列进行格式输出
            //Microsoft.Office.Interop.Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[this.table.Rows.Count + 1, 1]);
            //rg.NumberFormat = "00000000";   
            try
            {
                workbook.Saved = true;
                workbook.SaveCopyAs(sfdSaveFile.FileName);//保存复制到指定位置
                fileSaved = true;
            }
            catch (Exception ex)
            {
                fileSaved = false;
                MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
            }
            finally
            {
                workbooks.Close();
                xlApp.Quit();
                GC.Collect();//强行销毁
            }
            if (fileSaved && System.IO.File.Exists(sfdSaveFile.FileName))
            {
                //System.IO.File.Open(sfdSaveFile.FileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
                System.Diagnostics.Process.Start(sfdSaveFile.FileName); //打开EXCEL
            }
        }

方法二:从Gridview到Excel文件

        /// <summary>
        /// 导出Excel的方法
        /// </summary>
        private void ExportExcel()
        {
            bool fileSaved = false;
            SaveFileDialog sfdSaveFile = new SaveFileDialog();
            sfdSaveFile.DefaultExt = "xlsx"; //设置保存文件的格式
            sfdSaveFile.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls";
            sfdSaveFile.FileName = string.Empty;
            if (sfdSaveFile.ShowDialog() != DialogResult.OK) return;

            //电脑Excel程序
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            if (xlApp == null)
            {
                MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel程序!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //Workbook集合
            Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
            //Workbook
            Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
            //WorkSheet
            Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1

            //标题
            for (int c = 0; c < this.dataGridView1.Columns.Count; c++)
            {
                worksheet.Cells[1, c + 1] = this.dataGridView1.Columns[c].HeaderText;
                //设置单元格样式
                Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, c + 1];
                //range.Font.Name = "华文楷体";//字体
                //range.Font.Bold = true;//是否加粗
                //range.Font.Italic = false;//是否倾斜
                //range.Font.Size = 15;//字体大小

                //其他样式属性暂不知其中的值,不可用
                //range.Font.Background ="#fff000";//背景颜色
                //range.Font.Color ="#ff0000";//字颜色
                //range.Font.ColorIndex = 3;
                //range.Borders.Color = "#00ffee";//边框颜色
            }
            //单元格内容
            for (int rowIndex = 0; rowIndex < this.dataGridView1.Rows.Count; rowIndex++)
            {
                for (int columnIndex = 0; columnIndex < this.dataGridView1.Columns.Count; columnIndex++)
                {
                    worksheet.Cells[rowIndex + 2, columnIndex + 1] = this.dataGridView1.Rows[rowIndex].Cells[columnIndex].Value;
                }
            }
            worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
            //对指定列进行格式输出
            //Microsoft.Office.Interop.Excel.Range rg = worksheet.get_Range(worksheet.Cells[2, 1], worksheet.Cells[this.table.Rows.Count + 1, 1]);
            //rg.NumberFormat = "00000000";   
            try
            {
                workbook.Saved = true;
                workbook.SaveCopyAs(sfdSaveFile.FileName);//保存复制到指定位置
                fileSaved = true;
            }
            catch (Exception ex)
            {
                fileSaved = false;
                MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
            }
            finally
            {
                workbooks.Close();
                xlApp.Quit();
                GC.Collect();//强行销毁
            }
            if (fileSaved && System.IO.File.Exists(sfdSaveFile.FileName))
            {
                //System.IO.File.Open(sfdSaveFile.FileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Read);
                System.Diagnostics.Process.Start(sfdSaveFile.FileName); //打开EXCEL
            }
        }
分享到:
评论

相关推荐

    C#导出excel文件

    总结来说,C#导出Excel文件涉及选择合适的库,如EPPlus,创建Excel包,添加工作表,以及将数据写入工作表。这个过程可以适应各种数据源和数据结构,使得C#成为处理Excel文件的强大工具。在实际应用中,可以根据具体...

    C#导出Excel 导出PDF

    首先,我们来看C#导出Excel的实现。Excel文件通常以`.xlsx`或`.xls`格式存储,C#可以借助Microsoft Office Interop库直接操作Excel对象,但这要求目标机器上安装了Office。另一种更灵活且无需依赖Office的方法是使用...

    C#导出Excel复杂表头解决方案

    标题"**C#导出Excel复杂表头解决方案**"涉及的是在C#应用程序中如何高效地创建包含复杂结构的Excel表头,这在数据报告、数据分析或自动化办公场景中非常常见。复杂表头可能包括多级标题、合并单元格、自定义样式等。...

    C#导出EXCEL合并 字体颜色居中

    ### C#导出Excel并实现单元格合并及样式设置 #### 概述 在实际开发过程中,导出数据到Excel是常见的需求之一。而在导出过程中实现数据的合并以及字体颜色居中等功能,则是对用户体验的一种优化提升。本文将详细...

    C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    "C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法" 在导出Excel文件时,经常会遇到“文件格式与扩展名指定格式不一致”的问题,这是因为大多数人在导出Excel文件时,都是默认保存Excel的格式...

    C#导出Excel和图形.zip

    本压缩包“C#导出Excel和图形.zip”很可能包含一系列示例代码或教程,旨在帮助开发者学习如何在C#应用程序中生成Excel文件和图表。下面将详细探讨这个主题,以及相关的知识点。 1. **Excel导出**: - **NPOI库**:...

    C#导出 Excel和图形 Vs2010

    总的来说,"C#导出Excel和图形Vs2010"这个主题涵盖了使用C#编程语言在Visual Studio 2010环境下处理数据导出到Excel文件以及生成图形的基本技术。无论是通过Excel Interop还是第三方库,都可以实现高效、灵活的数据...

    c#导出excel支持多sheet导出,可自定义sheetName

    c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言,或qq1574697828.c#导出excel支持多sheet导出,可自定义sheetName,如有疑问请留言。

    C#导出Excel,利用第三方控件,改变导出样式,字体等

    总的来说,使用第三方控件如myxls在C#中导出Excel,不仅提高了程序的可移植性,还提供了更多自定义样式和格式的可能性。这种方式对于那些需要大量生成Excel报表,或者对Excel样式有特殊要求的项目非常实用。在实际...

    c# 导出Excel

    总之,C#导出Excel涉及的关键技术包括选择合适的库(如EPPlus、NPOI或ClosedXML)、理解和应用库的API以及正确处理数据格式。通过熟练掌握这些知识点,你可以轻松地在C#应用程序中实现格式化的Excel导出功能。

    c# 导出到Excel (C# winform)

    c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#) winform

    C# 导出EXCEL C# 导出EXCEL C# 导出EXCEL

    下面我们将深入探讨C#导出Excel的原理、方法和常见实践。 首先,C#导出Excel主要有两种方式:使用Microsoft Office Interop库(需在运行环境中安装Office)或使用第三方库。前者直接操作Excel应用程序对象模型,而...

    C# 导出excel表格(xls、xlsx两种格式)

    在C#编程环境中,导出Excel表格是一项常见的需求,尤其在数据处理和报告生成时。本文将详细讲解如何使用C#来实现Excel表格的导出,包括xls和xlsx两种常见格式。 首先,我们需要理解这两种格式的区别。Xls是Excel...

    C#导出Excel的代码

    ### C#导出Excel的代码知识点解析 #### 一、概述 在开发过程中,经常需要将数据导出到Excel文件中以便于用户查看或进一步处理。C# 提供了多种方式来实现这一功能,其中使用 ADO.NET 操作 Excel 文件是一种常见的...

    C#导出Excel并关闭进程解决方案

    C#导出Excel并关闭进程解决方案,因为项目导出EXCEL偶尔会报错,现共享解决方案。

    C#导出Excel 兼容各个版本的Excel

    C#操作Excel导出类,可以直接调用,兼容各个版本的Excel和WPS。

    C# 导出excel 实例代码

    首先,要理解C#导出Excel的基本原理。通常,我们可以使用两种主要的方式来完成这个任务:一是使用Microsoft Office Interop组件,二是使用第三方库。对于Interop组件,它直接与Excel应用程序进行交互,但缺点是需要...

    c#导出Excel

    ### C# 导出 Excel 的方法详解 在 IT 领域中,处理大量数据时经常需要将数据导出到 Excel 文件中以便于进一步分析或分享。C# 作为一种广泛使用的编程语言,提供了多种方式来实现这一功能。本文将详细介绍一种不依赖...

    C#导出Excel 例程和Dll

    目前C#导出Excel主要有八种方法(https://www.cnblogs.com/Brambling/p/6854731.html), 其中NPOI个人感觉是最好的, 好不容易找到完整Dll, 做了Demo, 给需要的朋友做参考.

    C#导出excel.rar

    本教程将基于提供的"C#导出excel.rar"压缩包,详细介绍如何使用C#语言来创建和导出Excel文件,包括所需的库、基本操作以及代码实现。 首先,我们需要引入一个能够处理Excel文件的库。在C#中,最常用的是`EPPlus`库...

Global site tag (gtag.js) - Google Analytics