通过传入不同的数据集来控制Excel中sheet的数目,此例依照两个为例,仅供大家参考:

#region 導出Excel
        private void outPutExcel(System.Data.DataTable dt, System.Data.DataTable dt2)
        {
            if (dt == null) return;
            Excel.Application xlApp = new Excel.Application();
            if (xlApp == null)
            {
                //clsLog.m_CreateErrorLog("无法创建Excel对象,可能计算机未安装Excel", "", "");
                return;
            }
            //創建Excel對象
            Excel.Workbooks workbooks = xlApp.Workbooks;
            Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
            //Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
            Excel.Worksheet worksheet = null;
            for (int sheetcount = 0; sheetcount < 2; sheetcount++)//循环根据自己需要的sheet的数目这里是两个
            {
                if (worksheet == null)
                {
                    worksheet = (Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
                }
                else
                {
                    worksheet = (Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, worksheet, 1, Type.Missing);
                }
                Excel.Range range = null;
                if (sheetcount == 0)
                {
                    long totalCount = dt.Rows.Count;
                    long rowRead = 0;
                    float percent = 0;
                    worksheet.Name = "明細資料一";//第一个sheet在Excel中显示的名称
                    写入标题
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
                        range = (Excel.Range)worksheet.Cells[1, i + 1];
                        range.Interior.ColorIndex = 15;//背景颜色
                        range.Font.Bold = true;//粗体
                        range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//居中
                        //加边框
                        range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null);
                        range.ColumnWidth = 4.63;//设置列宽
                        range.EntireColumn.AutoFit();//自动调整列宽
                        //r1.EntireRow.AutoFit();//自动调整行高
                    }

//写入内容
                    for (int r = 0; r < dt.Rows.Count; r++)
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            worksheet.Cells[r + 2, i + 1] = dt.Rows[r][i];
                            range = (Excel.Range)worksheet.Cells[r + 2, i + 1];
                            range.Font.Size = 9;//字体大小
                            //加边框
                            range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null);
                            range.EntireColumn.AutoFit();//自动调整列宽
                        }
                        rowRead++;
                        percent = ((float)(100 * rowRead)) / totalCount;
                    }
                    range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin;
                    if (dt.Columns.Count > 1)
                    {
                        range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
                    }
                }
                else if (sheetcount == 1)
                {
                    long totalCount = dt2.Rows.Count;
                    long rowRead = 0;
                    float percent = 0;
                    worksheet.Name = "建議解決方案";
                    写入标题
                    for (int i = 0; i < dt2.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1] = dt2.Columns[i].ColumnName;
                        range = (Excel.Range)worksheet.Cells[1, i + 1];
                        range.Interior.ColorIndex = 15;//背景颜色
                        range.Font.Bold = true;//粗体
                        range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//居中
                        //加边框
                        range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null);
                        range.ColumnWidth = 14.63;//设置列宽
                        range.EntireColumn.AutoFit();//自动调整列宽
                        //r1.EntireRow.AutoFit();//自动调整行高
                    }
                    //写入内容
                    for (int r = 0; r < dt2.Rows.Count; r++)
                    {
                        for (int i = 0; i < dt2.Columns.Count; i++)
                        {
                            worksheet.Cells[r + 2, i + 1] = dt2.Rows[r][i];
                            range = (Excel.Range)worksheet.Cells[r + 2, i + 1];
                            range.Font.Size = 9;//字体大小
                            //加边框
                            range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThin, Excel.XlColorIndex.xlColorIndexAutomatic, null);
                            range.EntireColumn.AutoFit();//自动调整列宽
                        }
                        rowRead++;
                        percent = ((float)(100 * rowRead)) / totalCount;
                        //System.Windows.Forms.Application.DoEvents();
                    }
                    range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight = Excel.XlBorderWeight.xlThin;
                    if (dt2.Columns.Count > 1)
                    {
                        range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
                    }
                }
            }

//下面是将Excel存储在服务器上指定的路径与存储的名称
            try
            {
                string tPath = System.AppDomain.CurrentDomain.BaseDirectory;
                if (!Directory.Exists(tPath + "Excel"))
                {
                    Directory.CreateDirectory(tPath + "Excel");
                }
                workbook.SaveCopyAs(tPath + "Excel" + "\\" + System.DateTime.Today.ToString("yyyyMMdd") + pCompany + "测试.xls");
                }
                //writeLog("生成Exce附件成功!");//此处是我的一个方法,记录log讯息的
            }
            catch(Exception ex)
            {
                string strMsgErr = "生成Excel附件過程中出現異常,詳細信息如:" + ex.ToString();
                //writeLog(strMsgErr);//这个也是写log档的
            }
            //我们导出Excel的时候会在进程中调用Excel进程,导出之后必须强制杀掉进程           
            try
            {
                if (xlApp != null)
                {
                    int lpdwProcessId;
                    GetWindowThreadProcessId(new IntPtr(xlApp.Hwnd), out lpdwProcessId);
                    System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Delete Excel Process Error:" + ex.Message);
            }
        }
        #endregion

到这里从数据库中导出Excel就完成了,并生成在相应的目录下。

这只是一个简单的导出方法,重点是我们要学会通过这个方法,将其运用到其他的导出Excel的功能需求中,这个时候我们需要做的可能有改变参数传入的个数,类型,等等。

之后我还会恭喜出,动态的从数据库中导出Excel,并将其作为发送邮件的附件发送到指定的接受人,以及将发送的邮件完成的保存成二进制文件或者XML文件,供我们追寻,如果发送失败的话,不需要重新生成所有的东西,只需调用保存的二进制文件或者XML文档即可完成重新发送邮件,方便快捷!

OK啦,今天就先说这么多啦!希望有更好的实现方法的朋友能够回复我,将你的资料共享出来!拜拜!

WinForm中导出Excel相关推荐

  1. Winform中导出Excel数据量百万级的处理办法-导出为csv文件

    场景 Winform中通过NPOI导出Excel的三种方式(HSSFWorkbook,XSSFWorkbook,SXSSFWorkbook)附代码下载: https://blog.csdn.net/B ...

  2. c# winform html 表,C# winform中嵌入Excel实现复杂表格的显示和控制

    龙源期刊网 http://www.doczj.com/doc/7c6e747d7375a417866f8fac.html C# winform中嵌入Excel实现复杂表格的显示和控制 作者:斯琴巴图杨 ...

  3. WinForm中使用Excel控件

     最近项目中要在WinForm中使用Excel控件,经过几天的研究,现在总结一下成果. 在WinForm中使用Excel控件主要有三种方法:WebBrowser.DSOFramer.OWC.下面分别 ...

  4. Acey.ExcelX实例演练(1)—从GridView中导出Excel报表

    Acey.ExcelX实例演练(1) -从GridView中导出Excel报表 关键词:GridView,数据绑定,Excel报表 在开发过程中我们经常遇到需要将页面中查看到的数据导出Excel的情况 ...

  5. .Net Core通过NPOI在CentOS 7(Docker)环境中导出Excel报错The type initializer for ‘Gdip‘ 的问题

    一.前言 今天在AspNetCore5.0环境中做了一个导出Excel的功能,在开发机器上(windows10)调试正常,但是部署到centos7容器(容器基础环境mcr.microsoft.com/ ...

  6. java web中的导出excel_JAVA语言之怎么在JavaWeb中导出Excel

    本文主要向大家介绍了JAVA语言之怎么在JavaWeb中导出Excel,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 怎么在JavaWeb中导出Excel? 代码自解释 1,依赖包 ...

  7. vue中导出Excel表格

    vue中导出Excel表格 项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地.当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体 ...

  8. ag-grid-angular 中导出Excel表格 及其配置

    ag-grid-angular 中导出Excel表 及其配置 api 常用params 详解 自定义页眉和页脚 定义样式 样式参数详解 api exportDataAsExcel(params) 常用 ...

  9. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎么设置_Java代码实现设置单元格格式...

    java中导出excel设置单元格的样式为数字格式怎么设置 如果是使用poi,它会自动根据参数值设置单元格为恰当格式,只需传入数字类型参数值即可,比如 double value=....; cell. ...

最新文章

  1. 20190429 照片里面的GPS信息确实会暴露经纬度
  2. 什么是带宽?—Vecloud微云
  3. virtualbox配置apache_virtualbox 网络配置 (转)
  4. TIM怎么显示每条信息的时间
  5. 微信小程序中相机api_微信小程序 Image API实例详解
  6. HP-Socket v5.4.4 发布,高性能跨平台网络通信框架
  7. 松下机器人找原点步骤_松下机器人操作规程2017
  8. matlab定义变量var,设置变量数据类型 - MATLAB setvartype - MathWorks 中国
  9. mkfs.ext3 快速格式化_U盘数据快速恢复
  10. 在VMware Workstation中创建一个虚拟软盘,并在Windows XP上使用
  11. 华三模拟器命令(陆续更新)
  12. @RunWith的作用
  13. 传奇GOM引擎登录器配置教程
  14. 这些线上峰会为何不约而同选择亿联视讯方案?云端协同、流畅安全是关键!
  15. flex布局属性的伸展、收缩、基准属性
  16. 微信公众号开发---机器人
  17. 图片添加水印相关记录
  18. java license 验证方案,使用License3j实现简单的License验证
  19. STM32G070RBT6基于Arduino框架GPIO外部中断
  20. 年度重点家族盘点—PC僵尸网络家族

热门文章

  1. 中国电信叫停不限量套餐 套外资费3元/GB
  2. 有人抄袭微信红包和表情被罚了40万!这下“吹牛”可能牛不起来了
  3. 华为Mate 30 Pro就长这样了?前后六摄 这造型已看醉
  4. 春运公益片“情满回家路”上线 顺风车等出行方式再被呼吁
  5. 1.请求安全-- MD5的必要性以及实际应用场景
  6. Android实现图片的高效批量加载
  7. unix和linux的区别
  8. 虚拟机启动后链接超时
  9. 【java】java wait 原理 synchronized ReentrantLock 唤醒顺序
  10. 【ElasticSearch】Es 源码之 CleanerService 源码解读