/// <summary>
/// 把指定的dataset中的内容导出到excel中.
/// </summary>
/// <param name="ds">ds参数为dateset对象</param>
/// <param name="impstr">该字符串用来指定一些字段来导出,其使用格式为:aaa|aaa,bbb|bbb 小写字符串为在excel表中显示该字段的列标题,大写表示字段名.不同字段使用逗号分隔.</param>
/// <param name="locr">数据导出到excel中的开始行</param>
/// <param name="locc">数据导出到excel中的开始列</param>
/// <param name="titlestr">该字符串用来指定要导出的表和表的标题其格式为:aaa|aaa,bbb|bbb 小写为该表中显示的标题,大写为表名称.不同表使用逗号分隔</param>
/// <param name="tiltelocr">显示标题的行</param>
/// <param name="titlelocc">显示标题的列</param>
/// <param name="coltitlecolorindex">列标题颜色索引</param>
/// <example>import2excel(this.dsdata ,"用户名|username,登录名|loginname",3,1,"用户名列表|bill_user",1,2 ,12);</example>
private void import2excel(system.data.dataset ds,string impstr ,int locr,int locc,string titlestr,int tiltelocr, int titlelocc,int coltitlecolorindex )
{
//加载excel
microsoft.office.interop.excel.applicationclass ex=new microsoft.office.interop.excel.applicationclass();
ex.visible=true ;//显示excel
if (ex==null)
{
//无法显示时报错
messagebox.show("无法启动 microsoft office excel,导出失败!","import2excel", messageboxbuttons.ok,messageboxicon.stop );
return ;
}
string[] tles=titlestr.split(",".tochararray());
string[] imps=impstr.split(",".tochararray()) ;
string[] tlbs=titlestr.split(",".tochararray ());
//获得工作薄
microsoft.office.interop.excel.workbooks wbs =ex.workbooks;
microsoft.office.interop.excel.workbook wb= wbs.add(microsoft.office.interop.excel.xlwbatemplate.xlwbatworksheet);
int z=0;//sheet索引
foreach (string tblname in tlbs)
z+=1;
//得到表和工作表一个工作表对应一个表,
string[] tbn=tblname.split("|".tochararray());
system.data.datatable dt=ds.tables[tbn[1].toupper() ];
microsoft.office.interop.excel.worksheet ws=
(microsoft.office.interop.excel.worksheet)wb.worksheets[z];
//工作表的第一行标题设置为该表的表名.
//从格式字符串中去表名对应的名称.
// int tm1=titlestr.toupper().indexof(dt.tablename+"|")+dt.tablename.length +1;
// string tit=titlestr.substring(tm1,titlestr.indexof(",",tm1)-tm1);
ws.cells[tiltelocr, titlelocc]=tbn[0] ;//设置该单元格显示的标题
ws.name=dt.tablename ;//设置该sheet的名称为表名.
int n1=locc;
//设置字段名称
foreach (string imp in imps)
{
string[] im=imp.split("|".tochararray());
n1+=1 ;
ws.cells[locr, n1]=im[0];//'字段名称
microsoft.office.interop.excel.range rg=
(microsoft.office.interop.excel.range)ws.cells[locr, n1];
rg.interior.colorindex=coltitlecolorindex;
rg.font.bold=true;
}
for (int y=0;y<=dt.rows.count -1;y+=1)
{
system.data.datarow dr=dt.rows[y];
int n2=1;
foreach (string imp in imps)
ws.cells[locr+1+y,locc+n2]=dr[im[1].toupper()];
n2+=1;
}
}