c# 高效率导出多维表头excel
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
- private void ExportToExcel(string fielName)
- {
- //实例化一个Excel.Application对象
- Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
- try
- {
- if (dgv_Result.DataSource == null)
- return;
- if (dgv_Result.Rows.Count == )
- return;
- //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
- Microsoft.Office.Interop.Excel.Workbook xlBook = excel.Workbooks.Add(true);
- //1.添加表头
- excel.Cells[, ] = tyclass;
- for (int i = ; i < dgv_Result.Columns.Count; i++)
- {
- excel.Cells[, i + ] = dgv_Result.Columns[i].Name;
- }
- #region 2.实现Excel多维表头 采用合并单元格的方式
- Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.ActiveSheet;
- Microsoft.Office.Interop.Excel.Range excelRange = sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange1 = sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange2 = sheet.get_Range(sheet.Cells[,], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange3 = sheet.get_Range(sheet.Cells[,], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange4 = sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange5 = sheet.get_Range(sheet.Cells[, ], sheet.Cells[, ]);
- Microsoft.Office.Interop.Excel.Range excelRange6 = sheet.get_Range(sheet.Cells[, ], sheet.Cells[,]);
- excelRange.Merge(excelRange.MergeCells);
- excelRange1.Merge(excelRange1.MergeCells);
- excelRange4.Merge(excelRange4.MergeCells);
- excelRange2.Merge(excelRange2.MergeCells);
- excelRange3.Merge(excelRange3.MergeCells);
- excelRange5.Merge(excelRange5.MergeCells);
- excelRange6.Merge(excelRange6.MergeCells);
- Microsoft.Office.Interop.Excel.Range columnRange = sheet.get_Range("A1", "H2"); //得到 Range 范围 A-H 表示1-8列,1-2表示跨几行
- columnRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
- columnRange.Font.Size = ;
- columnRange.Font.Bold = true;
- #endregion
- #region 3.添加行数据,直接给Range赋值可提高效率
- Microsoft.Office.Interop.Excel.Range range = sheet.get_Range("A3", "H" + (dgv_Result.Rows.Count + ).ToString()); //得到 Range 范围
- string[,] AryData = new string[dgv_Result.Rows.Count-, dgv_Result.Columns.Count];
- for (int i = ; i < dgv_Result.Rows.Count - ; i++)
- {
- for (int j = ; j < dgv_Result.Columns.Count; j++)
- {
- AryData[i,j] = dgv_Result.Rows[i].Cells[j].Value.ToString();
- }
- }
- range.Value2 = AryData;
- range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
- #endregion
- sheet.Cells.Columns.AutoFit();//设置Excel表格的 列宽
- excel.SheetsInNewWorkbook = ;//设置Excel单元格对齐方式
- excel.DisplayAlerts = false; //设置禁止弹出保存和覆盖的询问提示框
- excel.AlertBeforeOverwriting = false;
- //保存excel文件
- xlBook.SaveAs(fielName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
- MessageBox.Show("导出成功!", "提示");
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误提示");
- }
- finally
- {
- IntPtr pt = new IntPtr(excel.Hwnd);
- int k = ;
- GetWindowThreadProcessId(pt, out k);
- System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
- p.Kill();
- }
- }
c# 高效率导出多维表头excel的更多相关文章
- 从DataTable高效率导出数据到Excel
首先从数据库读取数据到DataTable,这我就不提了,大家都明白.下面直接介绍如何从DataTable高效率导出数据到Excel中的方法,代码如下: using Microsoft.Office.I ...
- easypoi导出动态表头excel
easypoi导出动态表头excel 1: springBoot项目maven依赖: <dependency> <groupId>cn.afterturn</groupI ...
- (转)DataGridView多维表头及其扩展功能
dataGridView1.RowHeadersVisible = false;把整行选中那一列去掉.如果需要整行选中,新增一按钮列模拟实现.上源码:多维DataGridView 有个简易的方法: 1 ...
- js导出table中的EXCEL总结
导出EXCEL通常是用PHP做,可是项目中,有时候PHP后端project师返回的数据不是我们想要的,作为前端开发project师,把相应的数据编号转换为文字后,展示给用户.可是.需求要把数据同一时候 ...
- SILVERLIGHT 多维表头、复杂表头 MULTIPLE HEADER
先上图, 众所周知,利用silverlight datagrid展示数据相当方便,但是想要弄出一个漂亮的表头却要费尽周折.此文的目的就是简要介绍一下利用第三方控件 C1.Silverlight.Fle ...
- Datagridview 实现二维表头和行合并【转载】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...
- PHP导出MySQL数据到Excel文件
PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...
- 如何通过DataGridView 实现单元格合并和二维表头
先看下实现出来的效果(这里随便写了几组数据,用来测试) 先初始一个DataGridView 设置哪几列 DataGridView 里男女这两列的 AutoSizeMode 可以设置Fill. publ ...
- 在ASP.NET中将GridView数据导出到Word、Excel
在ASP.NET中将GridView数据导出到Word.Excel asp.net,导出gridview数据到Word,Excel,PDF #region Export to Word, Exce ...
随机推荐
- MYSQL 5.6中禁用INNODB引擎
并不是所有人都需要INNODB引擎,虽然它弥补了MYSQL缺乏事务支持的毛病,但是它的磁盘性能一直是让人比较担忧的.另外比较老的PHP系统,大多是采用MYISAM引擎在MYSQL建表,似乎INNODB ...
- FBI是如何破获“美国少女”裸照勒索案的
9月30日消息,据外国媒体报道,美国FBI昨日披露,“美国少女”(Miss Teen USA )卡西迪·伍尔芙(Cassidy Wolf )遭遇黑客通过电脑摄像头偷拍裸照兼敲诈勒索一案的嫌疑人已经被 ...
- DataTable的筛选,过滤后绑定数据源的两种方法(DataTable的select和使用linq返回List集合)
一般数据处理使用DataTable的情况会很多,而我们很多时候会对得到的DataTable的数据进行筛选后绑定到Combobox.GridView.Repeat等控件中,现在分享一下两种DataTab ...
- iOS 动画 旋转 移动简单代码
#import "ViewController.h" @interface ViewController () { UIImageView *imgView; BOOL flag; ...
- Unity3D之实现背景的无限重复生成
在制作flappyBird这个小游戏中(摄像机为Orthographic),为了无限重复生成背景,可以先做好三个背景(我做的有点小),在Gamecontroller上挂一个脚本,如下: pu ...
- javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
原因很简单:因为在js中{}表示一个语句块(代码段),所有加上"()"表示表达式
- CSS缩放函数, 旋转函数与倾斜函数
1 :缩放 scale(x,y)函数让元素根据中心原点对对象进行缩放,大于1进行放大,小于1则缩小,如果为负值,则先进行翻转再进行缩放操作. 实例: HTML: <div c ...
- Qt资源下载、安装、配置
(一)资源下载: 硕士毕业论文要做一个仿真平台,在linux环境下利用Qt开发. 自己有一定的c/c++基础,Qt是零基础接触.所以,经过一番查找,发现youtube一个外国友人Bryan从零开始教Q ...
- [Mac]关闭所有打开finder
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Light'} span.Apple-tab-span {white-sp ...
- web安全之sql注入原理
sql注入的原理: 将(恶意)的SQL命令注入到后台数据库引擎执行的能力,把信息返回到页面 sql注入产生的原因: 过滤不严谨,导致产生的sql注入. sql注入产生的地方: ...