当前位置:  编程技术>.net/c#/asp.net

C#实现Excel导出的代码一例

    来源: 互联网  发布时间:2014-08-30

    本文导语:  代码如下:   代码示例: //调用         dgvRecord.DataSource = dt; DAL.DataToExcel exp =new DAL.DataToExcel(); int flag = exp.ExistsRegedit(); if (flag == 0) {      MessageBox.Show("请先安装office或者wps,再进行导出 !");  }  else  {      if (dt...

代码如下:
 

代码示例:

//调用        
dgvRecord.DataSource = dt;
DAL.DataToExcel exp =new DAL.DataToExcel();
int flag = exp.ExistsRegedit();
if (flag == 0)
{
     MessageBox.Show("请先安装office或者wps,再进行导出 !");
 }
 else
 {
     if (dt != null && dt.Rows.Count > 0)
     {
         if (flag == 1 || flag == 2 || flag == 3)
         {
  ExportExcel(dt, flag);
         }
         else if (flag == 4 || flag == 5 || flag == 6 || flag == 7)
         {
  ExportExcel(dt, flag);
         }
     }
     else
     {
         MessageBox.Show("没有要导出的数据!");
     }
 }
 
//方法
#region 查询注册表,判断本机是否安装office2003,2007和wps
public int ExistsRegedit()
{
 int ifused = 0;
 RegistryKey rk = Registry.LocalMachine;
 RegistryKey akey = rk.OpenSubKey(@"SOFTWAREMicrosoftOffice11.0ExcelInstallRoot");//查询2003

 RegistryKey akey07 = rk.OpenSubKey(@"SOFTWAREMicrosoftOffice12.0ExcelInstallRoot");//查询2007
 RegistryKey akeytwo = rk.OpenSubKey(@"SOFTWAREKingsoftOffice6.0common");//查询wps
 //检查本机是否安装Office2003
 if (akey != null)
 {
     string file03 = akey.GetValue("Path").ToString();
     if (File.Exists(file03 + "Excel.exe"))
     {
         ifused += 1;
     }
 }

 //检查本机是否安装Office2007
if (akey07 != null)
{
     string file07 = akey07.GetValue("Path").ToString();
     if (File.Exists(file07 + "Excel.exe"))
     {
         ifused += 2;
     }
 }

 //检查本机是否安装wps
 if (akeytwo != null)
 {
     string filewps = akeytwo.GetValue("InstallRoot").ToString();
     if (File.Exists(filewps + @"office6et.exe"))
     {
         ifused += 4;
     }
 }
 return ifused;
}
#endregion

#region 导出excel
public void ExportExcel(System.Data.DataTable dt, int flag)
{
 //-***获取excel对象***
 string saveFileName = "";
 bool fileSaved = false;
 SaveFileDialog saveDialog = new SaveFileDialog();
 saveDialog.DefaultExt = "xls";
 if (flag == 2)
 {
     saveDialog.Filter = "Excel文件.xlsx|*.xlsx";
 }
 else if (flag == 4 || flag == 5 || flag == 6 || flag == 7)
 {
     saveDialog.Filter = "wps文件.et|*.et";
 }
 else
 {
     saveDialog.Filter = "Excel文件.xls|*.xls";
 }
 saveDialog.FileName = "导出普查信息表 " + DateTime.Today.ToString("yyyy-MM-dd");
 saveDialog.ShowDialog();
 saveFileName = saveDialog.FileName;
 if (saveFileName.IndexOf(":") < 0) return; //被点了取消
 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
 Microsoft.Office.Interop.Excel.Workbook workbook = xlApp.Workbooks.Add(true);
 Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
 Microsoft.Office.Interop.Excel.Range range;

 // 列索引,行索引,总列数,总行数   
 int colIndex = 0;
 int RowIndex = 0;
 int colCount = dgvRecord.ColumnCount;
 int RowCount = dt.Rows.Count;

 // ***获取数据***
 // 创建缓存数据
 object[,] objData = new object[RowCount + 1, colCount];

 // 获取具体数据
 for (RowIndex = 0; RowIndex < RowCount; RowIndex++)
 {
     for (colIndex = 0; colIndex < colCount; colIndex++)
     {
         objData[RowIndex, colIndex] = dt.Rows[RowIndex][colIndex];
     }

 }
 //*** 把数值型转成字符型l***
 range = worksheet.get_Range(xlApp.Cells[3, 2], xlApp.Cells[RowCount + 2, 2]);
 range.NumberFormatLocal = "@";
 range = worksheet.get_Range(xlApp.Cells[3, 3], xlApp.Cells[RowCount + 2, 3]);
 range.NumberFormatLocal = "@";
 range = worksheet.get_Range(xlApp.Cells[3, 7], xlApp.Cells[RowCount + 2, 7]);
 range.NumberFormatLocal = "@";
 range = worksheet.get_Range(xlApp.Cells[3, 8], xlApp.Cells[RowCount + 2, 8]);
 range.NumberFormatLocal = "@";

 //***** 写入Excel*****
 range = worksheet.get_Range(xlApp.Cells[3, 1], xlApp.Cells[RowCount + 2, colCount - 2]);
 range.Value2 = objData;
 System.Windows.Forms.Application.DoEvents();

 //特殊数字格式
 range = worksheet.get_Range(xlApp.Cells[3, colCount - 5], xlApp.Cells[RowCount + 2, colCount - 5]);
 range.NumberFormat = "yyyy-MM-dd hh:mm:ss";

 //*** 设置报表表格样式***
 //设置为横向打印
 //xlApp.ActiveSheet.PageSetup.Orientation=2;

 //设置报表表格为最适应宽度
 worksheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colCount]).Select();
 worksheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colCount]).Columns.AutoFit();

 //绘制边框  
 worksheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[RowCount + 2, colCount]).Borders.LineStyle = 1;
 //设置左边线加粗
 worksheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[RowCount, 1]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
 //设置上边线加粗
 worksheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, colCount]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
 //设置右边线加粗
 worksheet.get_Range(xlApp.Cells[1, colCount], xlApp.Cells[RowCount, colCount]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
 //设置下边线加粗
 worksheet.get_Range(xlApp.Cells[RowCount + 2, 1], xlApp.Cells[RowCount + 2, colCount]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;

 xlApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
 range = worksheet.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colCount]);
 //range.Interior.ColorIndex = 1;//背景色
 range.Font.Bold = true;
 range.RowHeight = 20;
 ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 1]).ColumnWidth = 25;
 ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 2]).ColumnWidth = 13;
 ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 3]).ColumnWidth = 15;
 ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 4]).ColumnWidth = 30;
 ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, 5]).ColumnWidth = 22;

 //合并单元格
 Microsoft.Office.Interop.Excel.Range excelRange = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 29]);
 excelRange.Merge(excelRange.MergeCells);

 //获取列标题
 for (int i = 0; i < colCount; i++)
 {
     worksheet.Cells[2, i + 1] = dgvRecord.Columns[i].HeaderText;
 }

 //文档标题
 range = worksheet.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, 1]);
 range.Font.Bold = true;
 range.Font.Size = 20;
 worksheet.Cells[1, 1] = "普查信息表";

 //*****保存*****
 if (saveFileName != "")
 {
     try
     {
         workbook.Saved = true;
         workbook.SaveCopyAs(saveFileName);
         fileSaved = true;
     }
     catch (Exception ex)
     {
         fileSaved = false;
         MessageBox.Show("导出文件时出错,文件可能正被打开!n" + ex.Message);
     }
 }
 else
 {
     fileSaved = false;
 }
 xlApp.Quit();
 GC.Collect();//强行销毁  
 if (fileSaved && File.Exists(saveFileName))
 {
     System.Diagnostics.Process.Start(saveFileName);
 }
}
#endregion


    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • mysql mysqldump只导出表结构或只导出数据的实现方法
  • 如何用java实现将数据库中的image类型数据导出到文本文件。并导入(高分求救!!)
  • php导出excel单元格自动换行怎么实现?
  • PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
  • mysql下完整导出导入实现方法
  • mysql数据库导出xml的实现方法
  • Godaddy 导入导出MSSQL数据库的实现步骤
  • mssql2005,2008导出数据字典实现方法
  • java导出csv方法实现讲解
  • Asp.net中DataTable导出到Excel的实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 用正则实现提取代码内容的代码
  • 通过javascript库JQuery实现页面跳转功能代码
  • 请问高手:Ctrl+Alt+F1~F8可以切换虚拟终端,这个代码是在哪儿实现的?我搞不懂,最好指点源代码大概位置。
  • c语言判断某一年是否为闰年的各种实现程序代码
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • php实现socket实现客户端和服务端数据通信源代码
  • servlet中怎么实现java代码和html代码的分离????
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • 如何用代码手工实现激活事件发生
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • python 实现文件的递归拷贝实现代码
  • Session id实现通过Cookie来传输方法及代码参考
  • 代码实现Radius服务模拟的问题,熟悉Radius服务的大虾请进!
  • JavaScript实现页面跳转的几种方法(参考代码)
  • JQuery实现元素屏幕居中显示的代码
  • java实现判断字符串是否全是数字的四种方法代码举例
  • css创意ul+li实现的细线表格实现代码
  • windows下c/c++读写锁实现原理及代码参考
  • winform下实现win7 Aero磨砂效果实现代码
  • Linux 共享内存介绍及实现代码
  • jQuery 表格隔行换色 鼠标高亮行变色的实现代码
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • interface 到底有什么用???实现接口,怎么实现??
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 怎么用Jsp实现在页面实现树型结构?
  • boost unordered_map和std::list相结合的实现LRU算法
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3