分享
 
 
 

实现dataset与excel转换

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

根据网上的一些资料,自己写了两个类实现dataset与excel转换。

使用时必须先引入excel com控件。。

using System;

using System.Data;

using Excel ;

namespace DataSetAndExcel

{

/// <summary>

/// 将数据集转换成excel工作簿

/// </summary>

public class DataSet2WorkBook

{

private DataSet mDs = new DataSet() ; //存放数据源

private string mFilePath = "c:\\temp.xls" ; //excel文件名,保存的路径

public DataSet2WorkBook(ref DataSet ds , string filePath )

{

//

// TODO: 在此处添加构造函数逻辑

//

this.mDs = ds ;

this.mFilePath = filePath ;

}

/// <summary>

/// 将数据表转换成excel工作簿中的sheet

/// </summary>

/// <param name="tb">要转换的数据表(引用类型)</param>

/// <param name="xSheet">目标sheet</param>

/// <param name="SheetName">sheet名字</param>

/// <returns></returns>

private bool DataTable2Sheet( ref System.Data.DataTable tb ,ref Excel._Worksheet xSheet ,string SheetName )

{

try

{

int rowIndex=2;

int colIndex=0;

if(SheetName == "")

{

xSheet.Name = tb.TableName ;

}

else

{

xSheet.Name = SheetName ;

}

foreach(DataColumn tempCol in tb.Columns )

{

xSheet.Cells[1,colIndex+1]=tempCol.ColumnName;

rowIndex = 2 ;

foreach(DataRow tempRow in tb.Rows )

{

xSheet.Cells[rowIndex ,colIndex+1] = "'"+tempRow[colIndex].ToString() ;

rowIndex++ ;

}

colIndex++;

}

return true ;

}

catch

{

return false ;

}

}

/// <summary>

/// 将指定数据集里的表转换成工作簿里sheet

/// </summary>

/// <param name="starPos">数据表开始位置从0开始计数</param>

/// <param name="Count">要转换数据表的数目</param>

/// <returns>成功返回true</returns>

public bool Convert(int starPos ,int Count)

{

try

{

System.Data .DataTable tempTable ; //创建临时表

Excel.Application xApp= new Excel.Application();

xApp.Visible = false ;

object objOpt = System.Reflection.Missing.Value;

Excel.Workbook xBook = xApp.Workbooks.Add(true) ;//添加新工作簿

Excel.Sheets xSheets = xBook.Sheets ;

Excel._Worksheet xSheet = null ;

//

//转换从指定起始位置以后一定数目的数据集

//

for(int i = starPos , iCount = 1 ; iCount <= Count && i< this.mDs.Tables.Count ; i++ ,iCount++ )

{

tempTable = this.mDs.Tables[i] ;

//

//创建空的sheet

//

xSheet = (Excel._Worksheet)(xBook.Sheets.Add(objOpt,objOpt,objOpt,objOpt)) ;

DataTable2Sheet(ref tempTable ,ref xSheet ,"") ;

}

//

//获取默认生成的sheet并将其删除

//

//Excel._Worksheet tempXSheet = (Excel._Worksheet) (xSheets.get_Item(1)) ;

//

Excel._Worksheet tempXSheet = (Excel._Worksheet) (xBook.Worksheets[Count+1]) ;

tempXSheet.Delete() ;

System.Runtime.InteropServices.Marshal.ReleaseComObject(tempXSheet) ;

tempXSheet=null ;

//

//保存

//

xBook.Saved = true ;

xBook.SaveCopyAs(this.mFilePath ) ;

//

//释放资源

//

System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet) ;

xSheet=null ;

System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheets) ;

xSheets=null ;

System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook) ;

xBook=null ;

xApp.Quit();

System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);

xApp = null ;

GC.Collect();//强行销毁

return true ;

}

catch

{

return false ;

}

}

/// <summary>

/// 重载convert,将数据集里所有的表转换工作簿的sheet

/// </summary>

/// <returns></returns>

public bool Convert()

{

return this.Convert( 0 ,this.mDs.Tables.Count ) ;

}

}

/// <summary>

/// WorkBook2DataSet 的摘要说明。将工作簿转换成dataset

/// </summary>

public class WorkBook2DataSet

{

private string mFilePath = "" ;

private DataSet mDs = new DataSet() ;

public WorkBook2DataSet(string path , ref DataSet ds)

{

//

// TODO: 在此处添加构造函数逻辑

//

this.mDs = ds ;

this.mFilePath = path ;

}

/// <summary>

/// 将工作簿中指定的sheet转换成dataset中的表

/// </summary>

/// <param name="pos">sheet在工作簿中的位置</param>

/// <returns>成功返回true</returns>

public bool Convert(int pos)

{

bool r = false ;

string strSql = "" ;

string sheetName = "" ;

System.Data.DataTable tTable;

OleDbDataAdapter objDa ;

//

//创建excel进程

//

object obj = System.Reflection.Missing.Value;

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有