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 ...
随机推荐
- WCF初探-4:WCF消息交换模式之请求与答复模式
请求与答复模式( Request/Reply) 这种交换模式是使用最多的一中,它有如下特征: 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 类型 相比Duplex来讲,这种模式强调的 ...
- 关于ImageLoader的详细介绍
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 相信大家 ...
- HDU 3397 Sequence operation
题目:下列操作 Change operations:0 a b change all characters into '0's in [a , b]1 a b change all character ...
- CSS属性之 -- overflow
overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,overflow属性有四个值:visible (默认), hidden, scroll, 和auto.同样有两个overflo ...
- 手把手教你用python抓网页数据
http://www.1point3acres.com/bbs/thread-83337-1-1.html
- web前端基础篇⑤
1.雪碧图技术(精灵图)sprite cpmpass-合并2.兼容性:1.reset充值技术,normalize技术2.加前缀-webkit —mom -ms— -o-3.<!Doctype&g ...
- 在window上安装pandas
之前在ubuntu上安装pandas,用的easy_install.这次在window上同样方法装遇到"unable to find vcvarsall.bat",看一些网上帖子好 ...
- vs2012 vs2010 opencv2.4.7配置
http://blog.csdn.net/xiaohanstu/article/details/45309149?utm_source=tuicool <pre name=.7配置 .配置 () ...
- apt-get命令详解
apt-cache search # ------(package 搜索包) apt-cache show #------(package 获取包的相关信息,如说明.大小.版本等) sudo apt- ...
- SVG裁剪和平移的顺序
SVG 里为元素添加 clip-path 属性即可做出裁剪效果,添加 transfrom 属性可以平移.旋转元素. 根据需求不同,有两种情况: 先裁剪元素,再把裁剪后的图形平移 先平移元素,再按区域裁 ...