关键词:
情况是这个样子的:
在一个页面里有俩个GridView,有一个导出按钮,点击导出按钮的时候,把GridView1的内容导出到excel的sheet1里,
把GridView2的内容导出到excel的sheet2里。
大家帮帮忙吧,谢谢。
另外还有几个小问题:
1.导出的时候怎么在excel中插入一行,就是想写个表头,表头的字自己写。(用代码实现)
2.excel的sheet1的名字怎么改掉?(用代码实现)
谢谢大家了。能帮一个就帮一个吧。
/// 把DataGridView到导出到Excel中
/// </summary>
/// <param >数据源DataGridView</param>
/// <param >保存文件名称</param>
/// <param >是否显示Excel界面</param>
/// <returns>导出是否成功</returns>
private bool ExportForDataGridview(System.Windows.Forms.DataGridView gridView, string fileName, bool isShowExcle, out string exceptionInfo)
bool isok = false;
exceptionInfo = "";
//建立Excel对象
Microsoft.Office.Interop.Excel.Application app = null;
try
app = new Microsoft.Office.Interop.Excel.Application();
catch
exceptionInfo = "无法创建Excel对象,请确保您的机器安装有MicroSoft Office 2003 Excel。";
isok = false;
if (app != null)
try
app.Visible = isShowExcle;
Workbooks workbooks = app.Workbooks;
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
if (worksheet == null)
exceptionInfo = "无法创建Excel工作表,未知错误。";
isok = false;
else
//求得当前显示列的数目
int columnCount = 0;
for (int i = 0; i < gridView.ColumnCount; i++)
if (gridView.Columns[i].Visible)
columnCount++;
string sLen = "";
//取得最后一列列名
char H = (char)(64 + columnCount / 26);
char L = (char)(64 + columnCount % 26);
if (columnCount < 26)
sLen = L.ToString();
else
sLen = H.ToString() + L.ToString();
//标题
string sTmp = sLen + "1";
Range ranCaption = worksheet.get_Range(sTmp, "A1");
string[] asCaption = new string[columnCount];
int asCaptionIndex = 0;
for (int i = 0; i < gridView.ColumnCount; i++)
if (gridView.Columns[i].Visible)
asCaption[asCaptionIndex] = gridView.Columns[i].HeaderText;
asCaptionIndex++;
ranCaption.Value2 = asCaption;
//数据
object[] obj = new object[columnCount];
int objIndex = 0;
for (int r = 0; r < gridView.RowCount - 1; r++)
for (int l = 0; l < gridView.Columns.Count; l++)
if (gridView.Columns[l].Visible)
if (gridView[l, r].ValueType == typeof(DateTime))
obj[objIndex] = gridView[l, r].Value.ToString();
else if (gridView[l, r].ValueType == typeof(String))
obj[objIndex] = "\'" + gridView[l, r].Value.ToString();
else
obj[objIndex] = gridView[l, r].Value;
objIndex = (objIndex + 1) % columnCount;
string cell1 = sLen + ((int)(r + 2)).ToString();
string cell2 = "A" + ((int)(r + 2)).ToString();
Range ran = worksheet.get_Range(cell1, cell2);
ran.Value2 = obj;
//保存
workbook.SaveCopyAs(fileName);
workbook.Saved = true;
isok = true;
catch (Exception err)
exceptionInfo = err.Message;
isok = false;
finally
if (app != null)
//关闭
app.UserControl = false;
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;
return isok;
需要引入
using Microsoft.Office.Interop.Excel;
----另外一种方法:
// 导出列表信息到Excel
public static void gSendGridInfoToExcel(DataGrid GridX)
Excel.Application excel= new Excel.ApplicationClass();
Excel._Workbook xBk = excel.Workbooks.Add(true);
Excel._Worksheet xSt = (Excel._Worksheet)xBk.ActiveSheet;
Excel.Range excelCell=null;
try
//赋值对象
object[] objarr;
DataTable dtTest=new DataTable();;
int i,j;
int iRows,iCows;
int iVisable;
iVisable=0;
iCows=0;
ArrayList list=new ArrayList();
//如果绑定数据源是DataTable和DataSet,取得行数
if (GridX.DataSource is System.Data.DataSet || GridX.DataSource is System.Data.DataTable)
dtTest=(DataTable)GridX.DataSource;
iRows=dtTest.Rows.Count;
else if (GridX.DataSource is System.Data.DataView)
DataView dvTest=(DataView)GridX.DataSource;
iRows=dvTest.Count;
dtTest=dvTest.Table;
//如果是集合取得行数
else
System.Collections.CollectionBase ColTest;
ColTest=(System.Collections.CollectionBase)GridX.DataSource;
iRows=ColTest.Count;
//如果有TableStyles则根据TableStyles取得(标题行)
if (GridX.TableStyles.Count>0)
iCows=GridX.TableStyles[0].GridColumnStyles.Count;
for(i=0;i<iCows;i++)
if(GridX.TableStyles[0].GridColumnStyles[i].Width>0)
iVisable++;
list.Add(GridX.TableStyles[0].GridColumnStyles[i].HeaderText);
objarr = new object[iVisable];
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[1,1],excel.Cells[1,iVisable]);
excelCell.Value2 = objarr;
//数据行
for(i=0;i<iRows;i++)
objarr = new object[iVisable];
list.Clear();
for(j=0;j<iCows;j++)
if(GridX.TableStyles[0].GridColumnStyles[j].Width>0)
list.Add("\'"+GridX[i,j].ToString().Replace("\\n",""));
if (list.Equals(System.DBNull.Value))
break;
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[i+2,1],excel.Cells[i+2,iVisable]);
excelCell.Value2 = objarr;
else
iCows=dtTest.Columns.Count;
for(i=0;i<iCows;i++)
list.Add(dtTest.Columns[i].Caption);
objarr = new object[iCows];
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[1,1],excel.Cells[1,iCows]);
excelCell.Value2 = objarr;
//数据行
for(i=0;i<iRows;i++)
objarr = new object[iCows];
list.Clear();
for(j=0;j<iCows;j++)
list.Add("\'"+GridX[i,j].ToString().Replace("\\n",""));
if (list.Equals(System.DBNull.Value))
break;
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[i+2,1],excel.Cells[i+2,iCows]);
excelCell.Value2 = objarr;
dtTest.Dispose();
excel.Visible=true;
catch (System.Exception e)
throw e;
finally
excelCell=null;
xBk=null;
xSt=null;
excel=null;
GC.Collect();
参考技术A 职位信息收藏] [该公司所有职位] [介绍给朋友] 参考技术B 楼上的大能,这个也可以啊
用asp.net把gridview中的所有数据导出到excel中没问题,根据条件查询的信息导出到excel中怎么整???
先查询你想要的结果绑定后,然后导出不就行了?如果是在已经绑定好的里面再筛选的话,不妨加个checkbox参考技术A你把根据条件查询的信息也绑定在导出的方法里面,代码我也有。 查看详情
c#winform中如何把表导出到excel
...个写到EXCEL文件中?具体怎么写高手指点下,我用的ACCESS数据库。最好给个例子看看~DataSet数据集内数据转化为Excel文件///<summary>///ExportFiles的摘要说明。///作用:把DataSet数据集内数据转化为Excel文件///描述:导出Excel文件///... 查看详情
如何把sqlserver表数据导出为excel文件
在SQL数据库的很多应用场景中,需要将SQL中的某个数据库或查询的结果导出到EXCEL中,因为Excel更容易对数据处理和方便用户邮箱传输。本次经验归纳了SQL数据表导出到EXCEL中的三种方法:1、复制粘贴,将SQL查询语句按指定条件... 查看详情
如何将数据库中的数据导出到excel?
参考技术A在这里介绍把数据库中的数据导出到excel的方法,希望本指南能帮到大家。01双击打开access数据库。进入到操作界面。02鼠标移到菜单栏,点击:外部数据03下面即弹出与之相关的功能区。我们看“导出”这功能区。04在... 查看详情
如何把sqlserver表数据导出为excel文件
1、少量数据,直接在查询分析器中用SQL语句检索出数据,选定数据,点击鼠标右键可以直接另存为。2、批量数据,可以使用服务器附带的,DTS数据导入导出工具。参考技术A 1 方法一:对于会写查询SQL语句的则是直接写... 查看详情
如何在mysql里把数据导出成excel文件
在SQL数据库的很多应用场景中,需要将SQL中的某个数据库或查询的结果导出到EXCEL中,因为Excel更容易对数据处理和方便用户邮箱传输。本次经验归纳了SQL数据表导出到EXCEL中的三种方法:1、复制粘贴,将SQL查询语句按指定条件... 查看详情
百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司电话地址等数据导出excel里?
...出表格?怎样将把百度地图里面搜索到的公司电话地址等数据导出excel里?现在,很多人都在网络上找商家,联系业务。百度地图里有很多的商家联系方式地址等数据,这便成为很多人的便捷方式。但是一个个地复制出来商家的... 查看详情
把数据库数据导出excel
...最大值的时候回重新开启新的工作区,以及导出到excel的数据都是相应的数据类型,以往的导出都是字符串类型,所以当要进行计算的时候就很麻烦,下面的这个例子我大概导了20万数据做测试,没有出现问题,次类可支持百万... 查看详情
怎么把excel中的数据批量导入到mysql数据中
想把excel中的数据导入到mysql数据库中,有什么办法,有什么软件?1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\data.txt”这个位置里。2.根据要... 查看详情
怎样把access里面的上百万的数据导出到excel里面来?我现在是2010office。
...就鼠标手了,近2百万条一个,而且还有几十个这样的在数据等我。。。最好能帮我远程一下教我个简单高效的方法,麻烦你了!qq411485875.参考技术A很简单,你打开要导出的表,在上面工具栏点击“外部数据”选择“导出”Excel... 查看详情
asp.net中,如何实现将page页面各个空间的属性值,导出下载到一个word或excel中
...用把所有的控件的值都导出吧,一般导出的都是数据,如GridView1,等数据控件中的值,这个倒是很简单的。参考技术Aforeach循环页面所有controls,写入EXCEL。操作EXCEL请另查询,很容易的。 参考技术B首先,你要知道如何得到控件... 查看详情
如何把sqlserver表数据导出为excel文件
SQLServer表数据导出为Excel文件方法:1、选择数据库,启动导入和导出向导2、选择数据源3、选择目标4、然后一直点“下一步”按钮即可参考技术A最简单的方法就是使用Sqlserver自带的数据导入和导出工具来实现。1,数据导入和导... 查看详情
网页数据导出excel的方法
参考技术A 在Excel中录入数据的时候通常数据都是有源文件的,这个时候就可以直接从源文件直接导出到Excel,具体该怎么导出呢?下面是我带来的关于网页数据导出excel的方法,希望阅读过后对你有所启发! 网页数据导出exc... 查看详情
怎样从数据库里把自己需要的数据导出到excel表格中?
SERVER、ACCESS、EXCEL数据转换,详细说明如下:一、SQLSERVER和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQLServer,你可以使用这些步骤: ○1在SQLSERVER企业管理器中的Tools(工具)菜单上,选择DataTr... 查看详情
在c#中,如何把datagridview中的数据导出到一个excel表中
本人想把窗体中DataGridview内的数据通过一按钮导出到一张Excel表中,但不知该怎么搞,哪位高手帮帮忙啊命名空间是什么呢,要下载第三方控件么,小弟愚笨还望哪位高手指点指点,谢谢!真是巧,我昨天刚刚做了这个publicboolExpor... 查看详情
怎么把excel转化成project
可以。将项目数据导出到ExcelMicrosoftProject备有多个内置报表,您可以利用这些内置报表向利益干系人显示各类项目数据,还可以将项目数据导出到Excel2013,以进行深度数据分析和创建可视报表。在Excel中,您可以创建数据透视表... 查看详情
asp.net导出excel具体单元格
...批量导出记录到Excel,我想实现把某一条记录的每个栏位的数据导出到固定格式的Excel的具体某个单元格,比如把某条记录的课别数据导出到Excel的sheet1的C5单元格?这个怎么实现?http://bbs.csdn.net/topics/360100465看下这个帖子,,,你... 查看详情
python-将数据表中数据导出到excel(代码片段)
...:写一个函数,随便输入一个表名,把这个表里面所有的数据,导出到excel里面思路:1、‘select*from%s‘,查出这个表所有的数据2、再把所有的数据写到excelxlwt‘‘‘importpymysql,hashlib,xlwtdefop_mysql(sql:str):mysql_info=‘host‘:‘XXX.XXX.XXX.... 查看详情