首页 > 其他分享 >DataGridView导出EXCEL

DataGridView导出EXCEL

时间:2023-10-18 15:16:06浏览次数:38  
标签:execl EXCEL 导出 dataGridView DataGridView public

public class execl
    {
        /// <summary>
        /// 导出EXECLDataGridViewX
        /// </summary>
        /// <param name="dataGridView">DataGridViewX</param>
        /// <param name="IsVisible">是否导出隐藏列</param>
        public static void exp(DataGridView dataGridView,bool IsVisible=false)
        {
            try
            {
                if (dataGridView.RowCount<=0)
                {
                    throw new Exception("未有导出数据!!!");
                }
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "2007电子表格|*.xlsx";

                if (saveFileDialog.ShowDialog()== DialogResult.Cancel)
                {
                    return;
                }

                string file = saveFileDialog.FileName;

                XSSFWorkbook workbook2007 = new XSSFWorkbook();  //新建xlsx工作簿  
                workbook2007.CreateSheet("Sheet1");

                XSSFSheet SheetOne = (XSSFSheet)workbook2007.GetSheet("Sheet1");

                //首行标题
                // SheetOne.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 18));





                #region 样式1
                ///样试
                ICellStyle style = workbook2007.CreateCellStyle();
                //设置单元格的样式:水平对齐居中
                style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                //设置垂直剧中
                style.VerticalAlignment = VerticalAlignment.Center;
                //边框颜色
                style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
                style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
                style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
                style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
                //style.FillPattern = FillPattern.SolidForeground;
                //自动换行
               // style.WrapText = true;
            
                #endregion
                #region 样式2
                ///样试
                ICellStyle style2 = workbook2007.CreateCellStyle();
                //设置单元格的样式:水平对齐居中
                style2.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
                //设置垂直剧中
                style2.VerticalAlignment = VerticalAlignment.Center;
                //边框颜色
                style2.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
                style2.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
                style2.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
                style2.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
                //style.FillPattern = FillPattern.SolidForeground;
                //自动换行
                //style2.WrapText = true;
                style2.FillForegroundColor = HSSFColor.Red.Index;
                style2.FillPattern = FillPattern.SolidForeground;
                #endregion
                int i = 0; //行号
                XSSFRow row = (XSSFRow)SheetOne.CreateRow(i);
             
                int c = 0; //列号
                ICell cell;
                //写入列
                foreach (DataGridViewColumn eo in dataGridView.Columns)
                {
                    if (IsVisible)
                    {
                        if (!eo.Visible)
                        {
                            continue;
                        }
                    }
                    cell = row.CreateCell(c);
                    cell.SetCellValue(eo.HeaderText);
                    cell.CellStyle = style;
                    c++;

                }
                i++;
                foreach (DataGridViewRow ei in dataGridView.Rows)
                {
                    row= (XSSFRow)SheetOne.CreateRow(i);
                  
                    
                    c = 0;
                    foreach (DataGridViewColumn eo in dataGridView.Columns)
                    {
                        if (IsVisible)
                        {
                            if (!eo.Visible)
                            {
                                continue;
                            }
                        }
                        cell = row.CreateCell(c);
                        cell.SetCellValue(ei.Cells[eo.Name].Value.ToString());

                        if (ei.DefaultCellStyle.BackColor.Name == "Red")
                        {
                            cell.CellStyle = style2;
                        }
                        else
                        {
                            cell.CellStyle = style;
                        }

                       
                
                        c++;

                    }
                    i++;
                }
                FileStream file2007 = new FileStream(file, FileMode.Create);
                workbook2007.Write(file2007);
                file2007.Close();
                workbook2007.Close();
                 MessageBox.Show  ("导出成功");



            }
            catch (Exception ex )
            {

                throw ex ;
            }

        }
    }
}

 

标签:execl,EXCEL,导出,dataGridView,DataGridView,public
From: https://www.cnblogs.com/kangjin/p/17772374.html

相关文章

  • 小景的Dba之路--Oracle用exp导出dmp文件很慢
    小景最近在系统压测相关的工作,其中涉及了Oracle数据库相关的知识,之前考的OCP证书也在此地起了作用。今天的问题是:Oracle用exp导出dmp文件很慢,究竟是什么原因,具体的解决方案都有哪些呢? 下面我逐一来说下,首先列举了一些常见的原因:1.数据量大:如果你要导出的数据库包含大量数据,导......
  • 五、资源导出问题
    SubstancePainter当substance的贴图导出时,线性的颜色值经过伽马变换,颜色被提亮了,所以需要在Unity中勾选sRGB选项,让它在采样时能还原回线性值。PhotoShop如果使用线性空间,一般来说Photoshop可以什么都不改,导出的贴图只要勾上sRGB就可以了。如果调整PhotoShop的伽马值为1,导出的贴图......
  • 用jstack导出线程信息,用jmap导出线程信息和堆数据信息
    jmap导出的*.hprof文件需要用jvisualvm.exe工具来查看(当然也有第三方的其他工具),jdk8之后的是不会自带了需要手动安装;jmap导出的文件里是包含了线程信息,但是没有jstack导出的多,比如jstack里还有具体等待哪个锁的信息,这个锁的对象类型,还能看到是哪个线程获得了这个锁locked;jmap使......
  • 调用Python的openpyxl包对Excel表格进行美化
    Python中运用openpyxl包对Excel表格进行美化,包括字体样式调整、单元格对齐方式调整、单元格边框调整、单元格背景颜色调整、行高和列宽调整。使用的Python中openpyxl包的版本为3.0.5先看实际美化前后的效果对比详细的开发代码如下,代码当中对关键信息进行了说明。复制代码......
  • ad23Geber导出-官方教程(新版本-22.11版本后)
    -本文章只适用于22.11之后的ad版本geber导出,适配于ad23版本;若需要查看22.11之前的geber导出教程,请查看下方连接-ad22旧版Geber导出(22.11版本前)(含官方教程)(含坐标文件)_ad20导出坐标文件-CSDN博客 ——2023.10.17编辑1、AD生成geber文件导出(官方教程) 1、导出图像层1.1在PCB界......
  • 解决TypeError: read_excel() got an unexpected keyword argument ‘parse_cols or
    解决TypeError:read_excel()gotanunexpectedkeywordargument‘parse_cols'或‘sheetname‘在使用pandas包进行Excel文件处理时,有时候会遇到TypeError:read_excel()gotanunexpectedkeywordargument‘parse_cols'或TypeError:read_excel()gotanunexpectedkeyword......
  • Java编程之道:巧妙解决Excel公式迭代计算难题
    本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。什么是迭代计算迭代计算其实是在Excel中,一种公式的循环引用,对于了解编程概念的同学,很容易会想到另一个词“递归”。简单的说,就是一段程序调用自己,......
  • SQL_导出SQLserver数据库表和数据
    1.选择数据,右键。任务----生成脚本 2.选择具体的数据库对象 3.输入要保存的路径,点击高级。  4.在高级脚本编写选项中,选择架构和数据 ......
  • 从Excel到智能化:智能报表的演进与未来发展趋势
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。报表的迭代历程报表工具的诞生与计算机技术的出现和信息技术的进步密不可分。下图是报表工具的演进历程:注:上图是小编根据报表的演进历......
  • Pandas 读取 Excel 斜着读
    读取Excel斜着读数据importpandasaspddefread_sideling(direction,sheet_name,row_start,col_start,gap):"""斜着读数据:paramsheet_name::paramdirection:left往左下方读取↙,right往右下方读取↘:paramrow_idx:行号,从0开始,......