C#中导出EXcel的几种方法_第1页
C#中导出EXcel的几种方法_第2页
C#中导出EXcel的几种方法_第3页
C#中导出EXcel的几种方法_第4页
C#中导出EXcel的几种方法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#代码1 #region 导出当前页到Excel中 2 3 /按下导出按钮 4 private void button7_Click(object sender, EventArgs e) 5 6 print(dataGridView1); 7 8 public void print(DataGridView dataGridView1) 9 10 /导出到execl 11 try 12 13 /没有数据的话就不往下执行 14 if (dataGridView1.Rows.Count = 0) 15 return; 16 /实例化一个Excel.Application对象 17 Micros

2、oft.Office.Interop.Excel.Application excel =new Microsoft.Office.Interop.Excel.Application(); 18 19 /让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写 20 excel.Visible =false; 21 22 /新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错 23 excel.Application.Workbooks.Add(true); 24 /生成Excel中列头名称 2

3、5 for (int i = 0; i < dataGridView1.Columns.Count; i+) 26 27 excel.Cells1, i + 1 = dataGridView1.Columnsi.HeaderText; 28 29 /把DataGridView当前页的数据保存在Excel中 30 for (int i = 0; i < dataGridView1.Rows.Count - 1; i+) 31 32 for (int j = 0; j < dataGridView1.Columns.Count; j+) 33 34 if (dataGridVie

4、w1j, i.ValueType =typeof(string) 35 36 excel.Cellsi + 2, j + 1 ="'" + dataGridView1j, i.Value.ToString(); 37 38 else 39 40 excel.Cellsi + 2, j + 1 = dataGridView1j, i.Value.ToString(); 41 42 43 44 45 /设置禁止弹出保存和覆盖的询问提示框 46 excel.DisplayAlerts =false; 47 excel.AlertBeforeOverwriting =fal

5、se; 48 49 /保存工作簿 50 excel.Application.Workbooks.Add(true).Save(); 51 /保存excel文件 52 excel.Save("D:" +"KKHMD.xls"); 53 54 /确保Excel进程关闭 55 excel.Quit(); 56 excel =null; 57 58 59 catch (Exception ex) 60 61 MessageBox.Show(ex.Message,"错误提示"); 62 63 64 #endregion 导出从数据库中查询到的所

6、有的数据到Excel中 C#代码65 #region 导出全部数据到Excel中,可弹出保存对话框,但没用SaveFileDialog 66 67 public void printAll(System.Data.DataTable dt) 68 69 /导出到execl 70 try 71 72 /没有数据的话就不往下执行 73 if (dt.Rows.Count = 0) 74 return; 75 /实例化一个Excel.Application对象 76 Microsoft.Office.Interop.Excel.Application excel =new Microsoft.Off

7、ice.Interop.Excel.Application(); 77 78 /新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错 79 excel.Application.Workbooks.Add(true); 80 81 /让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写 82 excel.Visible =false; 83 /生成Excel中列头名称 84 for (int i = 0; i < dt.Columns.Count; i+) 85 86 excel.Ce

8、lls1, i + 1 = dataGridView1.Columnsi.HeaderText;/输出DataGridView列头名 87 88 89 /把DataGridView当前页的数据保存在Excel中 90 if (dt.Rows.Count > 0) 91 92 for (int i = 0; i < dt.Rows.Count; i+)/控制Excel中行,上下的距离,就是可以到Excel最下的行数,比数据长了报错,比数据短了会显示不完 93 94 for (int j = 0; j < dt.Columns.Count; j+)/控制Excel中列,左右的距离

9、,就是可以到Excel最右的列数,比数据长了报错,比数据短了会显示不完 95 96 string str = dt.Rowsij.ToString(); 97 excel.Cellsi + 2, j + 1 ="'" + str;/i控制行,从Excel中第2行开始输出第一行数据,j控制列,从Excel中第1列输出第1列数据,"'" +是以string形式保存,所以遇到数字不会转成16进制 98 99 100 101 /设置禁止弹出保存和覆盖的询问提示框 102 excel.DisplayAlerts =false; 103 excel.

10、AlertBeforeOverwriting =false; 104 105 /保存工作簿,值为false会报错 106 excel.Application.Workbooks.Add(true).Save(); 107 /保存excel文件 108 excel.Save("D:" +"KKHMD.xls"); 109 110 /确保Excel进程关闭 111 excel.Quit(); 112 excel =null; 113 114 115 catch (Exception ex) 116 117 MessageBox.Show(ex.Message

11、,"错误提示"); 118 119 120 private void button1_Click(object sender, EventArgs e) 121 122 printAll(dt); 123 124 #endregion 125 private void menuItem16_Click(object sender, System.EventArgs e) ds.Tables"CurrentTable".AcceptChanges(); this.Cursor=Cursors.WaitCursor; Excel.Application my

12、Excel=new Excel.Application(); myExcel.Application.Workbooks.Add(true); myExcel.Visible=true; myExcel.Cells1,1=this.dataGrid1.CaptionText; /Object Dateds.Tables"CurrentTable".Rows.Countds.Tables"CurrentTable".Columns.Count; /生成标题 for(int i=0;i<ds.Tables"CurrentTable"

13、.Columns.Count;i+) myExcel.Cells2,i+1=ds.Tables"CurrentTable".Columnsi.Caption; /填充数据 for(int i=0;i<ds.Tables"CurrentTable".Rows.Count;i+) for(int j=0;j<ds.Tables"CurrentTable".Columns.Count;j+) if(ds.Tables"CurrentTable".Rowsij.GetType()=typeof(System.S

14、tring)126 127 myExcel.Cellsi+3,j+1="'"+ds.Tables"CurrentTable".Rowsij.ToString(); else myExcel.Cellsi+3,j+1=ds.Tables"CurrentTable".Rowsij.ToString(); 128 this.Cursor=Cursors.Default; MessageBox.Show("导出成功! ","恭喜",MessageBoxButtons.OK,MessageBoxI

15、con.Asterisk); 129 130 private void button5_Click_1(object sender, EventArgs e) /建立Excel对象 Excel.Application excel = new Excel.Application(); excel.Application.Workbooks.Add(true); /生成字段名称 for (int i = 0; i < dataGridView2.ColumnCount; i+) excel.Cells1,i + 1 = dataGridView2.Columnsi.HeaderText; i

16、f (y = 0) y = 1; toolStripStatusLabel6.Text = "数据导入中,请等待!" /填充数据 for (int i = 0; i < dataGridView2.RowCount - 1; i+) for (int j = 0; j < dataGridView2.ColumnCount; j+) if (dataGridView2j, i.Value = typeof(string) excel.Cellsi + 2, j + 1 = "" + dataGridView2i, j.Value.ToStri

17、ng(); else excel.Cellsi + 2, j + 1 = dataGridView2j, i.Value.ToString(); excel.Visible = true; / <summary>131 / </summary> / <param name="mydgv">控件 DataGridView </param> / <param name="dic">中英文对照的标题 </param> public static void ExportTasks(DataG

18、ridView mydgv, Dictionary <string, string> dic) / 定义要使用的Excel 组件接口 / 定义Application 对象,此对象表示整个Excel 程序 Microsoft.Office.Interop.Excel.Application excelApp = null; / 定义Workbook对象,此对象代表工作薄 Microsoft.Office.Interop.Excel.Workbook workBook; / 定义Worksheet 对象,此对象表示Execel 中的一张工作表 Microsoft.Office.Inte

19、rop.Excel.Worksheet ws = null; /定义Range对象,此对象代表单元格区域 Microsoft.Office.Interop.Excel.Range range;132 int dcell = 1; int rowindex = 0; int colindex = 0;133 int rowcount = mydgv.Rows.Count; int colcount = mydgv.Columns.Count; int dispcolcount = dic.Count; try /初始化 Application 对象 excelApp excelApp = new

20、 Microsoft.Office.Interop.Excel.Application(); /在工作薄的第一个工作表上创建任务列表 workBook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); ws = (Worksheet)workBook.Worksheets1;134 / 命名工作表的名称为 ws.Name = "Sheet1" /创建缓存 Object, objdata = new objectrowcount + 1, colcount; /创建标题 foreach (string s in

21、dic.Keys) objdatarowindex, colindex+ = dics.ToString(); /获取数据 for (int i = 0; i < rowcount; i+) dcell = 0; foreach (string ss in dic.Keys) for (int j = 0; j < colcount; j+) if (mydgv.Columnsj.Name = ss) objdatai + 1, dcell+ = mydgv.Rowsi.Cellsj.FormattedValue.ToString(); /得到样式之后的值 /写入Excel ran

22、ge = ws.get_Range(excelApp.Cells1, 1, excelApp.Cellsrowcount, dispcolcount); range.Value2 = objdata; System.Windows.Forms.Application.DoEvents(); /设置格式 excelApp.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlLeft; /全局左对齐 excelApp.Cells.EntireColumn.AutoFit(); range = ws.get_R

23、ange(excelApp.Cells1, 1, excelApp.Cells1, colcount); range.Font.Bold = true; /标题粗体 /显示 Excel excelApp.Visible = true;135 catch (Exception ex) throw ex; 136 # 137 using System;using System.Collections.Generic;using System.Text;using System.Web.UI.WebControls;using System.Data;using System.Web.UI.Html

24、Controls; namespace Common public class ExcelHelper / Excel导出 public static void Export(GridView dgExport, DataTable dtData) System.Web.HttpContext curContext = System.Web.HttpContext.Current; / IO用于导出并返回excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null;138 if (dtData != null) / 设置编码和附件格式 curContext.Response.Clear(); curContext.Response.ClearContent(); curContext.Response.Buffer = true; curContext.R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论