亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net與excel互操作實現代碼

2024-07-10 13:26:07
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


/// <summary>
/// 將datatable中的數據導出到指定的excel文件中
/// </summary>
/// <param>web頁面對象</param>
/// <param>包含被導出數據的datatable對象</param>
/// <param>excel文件的名稱</param>
public static void export(system.web.ui.page page,system.data.datatable tab,string filename)
{
system.web.httpresponse httpresponse = page.response;
system.web.ui.webcontrols.datagrid datagrid=new system.web.ui.webcontrols.datagrid();
datagrid.datasource=tab.defaultview;
datagrid.allowpaging = false;
datagrid.headerstyle.backcolor = system.drawing.color.green;
datagrid.headerstyle.horizontalalign = horizontalalign.center;
datagrid.headerstyle.font.bold = true;
datagrid.databind();
httpresponse.appendheader("content-disposition","attachment;filename="+httputility.urlencode(filename,system.text.encoding.utf8)); //filename="*.xls";
httpresponse.contentencoding=system.text.encoding.getencoding("gb2312");
httpresponse.contenttype ="application/ms-excel";
system.io.stringwriter tw = new system.io.stringwriter() ;
system.web.ui.htmltextwriter hw = new system.web.ui.htmltextwriter (tw);
datagrid.rendercontrol(hw);

string filepath = page.server.mappath("..")+"http://files//" +filename;
system.io.streamwriter sw = system.io.file.createtext(filepath);
sw.write(tw.tostring());
sw.close();

downfile(httpresponse,filename,filepath);

httpresponse.end();
}
private static bool downfile(system.web.httpresponse response,string filename,string fullpath)
{
try
{
response.contenttype = "application/octet-stream";

response.appendheader("content-disposition","attachment;filename=" +
httputility.urlencode(filename,system.text.encoding.utf8) + ";charset=gb2312");
system.io.filestream fs= system.io.file.openread(fullpath);
long flen=fs.length;
int size=102400;//每100k同時下載數據
byte[] readdata = new byte[size];//指定緩沖區的大小
if(size>flen)size=convert.toint32(flen);
long fpos=0;
bool isend=false;
while (!isend)
{
if((fpos+size)>flen)
{
size=convert.toint32(flen-fpos);
readdata = new byte[size];
isend=true;
}
fs.read(readdata, 0, size);//讀入一個壓縮塊
response.binarywrite(readdata);
fpos+=size;
}
fs.close();
system.io.file.delete(fullpath);
return true;
}
catch
{
return false;
}
}

/// <summary>
/// 將指定excel文件中的數據轉換成datatable對象,供應用程序進一步處理
/// </summary>
/// <param></param>
/// <returns></returns>
public static system.data.datatable import(string filepath)
{
system.data.datatable rs = new system.data.datatable();
bool canopen=false;

oledbconnection conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;"+
"data source=" + filepath + ";" +
"extended properties=/"excel 8.0;/"");

try//嘗試數據連接是否可用
{
conn.open();
conn.close();
canopen=true;
}
catch{}

if(canopen)
{
try//如果數據連接可以打開則嘗試讀入數據
{
oledbcommand myoledbcommand = new oledbcommand("select * from [sheet1$]",conn);
oledbdataadapter mydata = new oledbdataadapter(myoledbcommand);
mydata.fill(rs);
conn.close();
}
catch//如果數據連接可以打開但是讀入數據失敗,則從文件中提取出工作表的名稱,再讀入數據
{
string sheetname=getsheetname(filepath);
if(sheetname.length>0)
{
oledbcommand myoledbcommand = new oledbcommand("select * from ["+sheetname+"$]",conn);
oledbdataadapter mydata = new oledbdataadapter(myoledbcommand);
mydata.fill(rs);
conn.close();
}
}
}
else
{
system.io.streamreader tmpstream=file.opentext(filepath);
string tmpstr=tmpstream.readtoend();
tmpstream.close();
rs=getdatatablefromstring(tmpstr);
tmpstr="";
}
return rs;
}
/// <summary>
/// 將指定html字符串的數據轉換成datatable對象 --根據“<tr><td>”等特殊字符進行處理
/// </summary>
/// <param>html字符串</param>
/// <returns></returns>
private static datatable getdatatablefromstring(string tmphtml)
{
string tmpstr=tmphtml;
datatable tb=new datatable();
//先處理一下這個字符串,刪除第一個<tr>之前合最后一個</tr>之后的部分
int index=tmpstr.indexof("<tr");
if(index>-1)
tmpstr=tmpstr.substring(index);
else
return tb;

index=tmpstr.lastindexof("</tr>");
if(index>-1)
tmpstr=tmpstr.substring(0,index+5);
else
return tb;

bool existssparator=false;
char separator=convert.tochar("^");

//如果原字符串中包含分隔符“^”則先把它替換掉
if(tmpstr.indexof(separator.tostring())>-1)
{
existssparator=true;
tmpstr=tmpstr.replace("^","^$&^");
}

//先根據“</tr>”分拆
string[] tmprow=tmpstr.replace("</tr>","^").split(separator);

for(int i=0;i<tmprow.length-1;i++)
{
datarow newrow=tb.newrow();

string tmpstri=tmprow[i];
if(tmpstri.indexof("<tr")>-1)
{
tmpstri=tmpstri.substring(tmpstri.indexof("<tr"));
if(tmpstri.indexof("display:none")<0||tmpstri.indexof("display:none")>tmpstri.indexof(">"))
{
tmpstri=tmpstri.replace("</td>","^");
string[] tmpfield=tmpstri.split(separator);

for(int j=0;j<tmpfield.length-1;j++)
{
tmpfield[j]=removestring(tmpfield[j],"<font>");
index=tmpfield[j].lastindexof(">")+1;
if(index>0)
{
string field=tmpfield[j].substring(index,tmpfield[j].length-index);
if(existssparator) field=field.replace("^$&^","^");
if(i==0)
{
string tmpfieldname=field;
int sn=1;
while(tb.columns.contains(tmpfieldname))
{
tmpfieldname=field+sn.tostring();
sn+=1;
}
tb.columns.add(tmpfieldname);
}
else
{
newrow[j]=field;
}
}//end of if(index>0)
}

if(i>0)
tb.rows.add(newrow);
}
}
}

tb.acceptchanges();
return tb;
}

/// <summary>
/// 從指定html字符串中剔除指定的對象
/// </summary>
/// <param>html字符串</param>
/// <param>需要剔除的對象--例如輸入"<font>"則剔除"<font ???????>"和"</font>>"</param>
/// <returns></returns>
public static string removestring(string tmphtml,string remove)
{
tmphtml=tmphtml.replace(remove.replace("<","</"),"");
tmphtml=removestringhead(tmphtml,remove);
return tmphtml;
}
/// <summary>
/// 只供方法removestring()使用
/// </summary>
/// <returns></returns>
private static string removestringhead(string tmphtml,string remove)
{
//為了方便注釋,假設輸入參數remove="<font>"
if(remove.length<1) return tmphtml;//參數remove為空:不處理返回
if((remove.substring(0,1)!="<")||(remove.substring(remove.length-1)!=">")) return tmphtml;//參數remove不是<?????>:不處理返回

int indexs=tmphtml.indexof(remove.replace(">",""));//查找“<font”的位置
int indexe=-1;
if(indexs>-1)
{
string tmpright=tmphtml.substring(indexs,tmphtml.length-indexs);
indexe=tmpright.indexof(">");
if(indexe>-1)
tmphtml=tmphtml.substring(0,indexs)+tmphtml.substring(indexs+indexe+1);
if(tmphtml.indexof(remove.replace(">",""))>-1)
tmphtml=removestringhead(tmphtml,remove);
}
return tmphtml;
}

/// <summary>
/// 將指定excel文件中讀取第一張工作表的名稱
/// </summary>
/// <param></param>
/// <returns></returns>
private static string getsheetname(string filepath)
{
string sheetname="";

system.io.filestream tmpstream=file.openread(filepath);
byte[] filebyte=new byte[tmpstream.length];
tmpstream.read(filebyte,0,filebyte.length);
tmpstream.close();

byte[] tmpbyte=new byte[]{convert.tobyte(11),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),
convert.tobyte(11),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),convert.tobyte(0),
convert.tobyte(30),convert.tobyte(16),convert.tobyte(0),convert.tobyte(0)};

int index=getsheetindex(filebyte,tmpbyte);
if(index>-1)
{

index+=16+12;
system.collections.arraylist sheetnamelist=new system.collections.arraylist();

for(int i=index;i<filebyte.length-1;i++)
{
byte temp=filebyte[i];
if(temp!=convert.tobyte(0))
sheetnamelist.add(temp);
else
break;
}
byte[] sheetnamebyte=new byte[sheetnamelist.count];
for(int i=0;i<sheetnamelist.count;i++)
sheetnamebyte[i]=convert.tobyte(sheetnamelist[i]);

sheetname=system.text.encoding.default.getstring(sheetnamebyte);
}
return sheetname;
}
/// <summary>
/// 只供方法getsheetname()使用
/// </summary>
/// <returns></returns>
private static int getsheetindex(byte[] findtarget,byte[] finditem)
{
int index=-1;

int finditemlength=finditem.length;
if(finditemlength<1) return -1;
int findtargetlength=findtarget.length;
if((findtargetlength-1)<finditemlength) return -1;

for(int i=findtargetlength-finditemlength-1;i>-1;i--)
{
system.collections.arraylist tmplist=new system.collections.arraylist();
int find=0;
for(int j=0;j<finditemlength;j++)
{
if(findtarget[i+j]==finditem[j]) find+=1;
}
if(find==finditemlength)
{
index=i;
break;
}
}
return index;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2019中文字幕在线| 久久香蕉频线观| 成人免费xxxxx在线观看| 一本大道香蕉久在线播放29| 亚洲精品第一页| 欧美精品久久久久久久久久| 国产精品一区二区三区成人| 亚洲女人被黑人巨大进入al| 亚洲男子天堂网| 国产精品一区二区av影院萌芽| 九九久久久久久久久激情| 久久久亚洲精品视频| 国产亚洲精品高潮| 福利视频导航一区| 不卡av在线播放| 中文字幕最新精品| 91九色视频在线| 色中色综合影院手机版在线观看| 精品国产一区二区三区久久| 国产性色av一区二区| 国产精品自产拍在线观看中文| 国产日韩欧美在线看| 欧美精品日韩www.p站| www.xxxx欧美| 亚洲丝袜av一区| 91精品国产乱码久久久久久蜜臀| 久久久久久久国产精品视频| www亚洲精品| 欧美激情视频免费观看| 久久欧美在线电影| 91久久国产婷婷一区二区| 精品少妇一区二区30p| 亚洲毛片在线看| 精品国偷自产在线视频| 欧美极品第一页| 日韩精品在线免费播放| 亚洲自拍高清视频网站| 亚洲免费福利视频| 亚洲久久久久久久久久| 在线观看欧美日韩| 美女性感视频久久久| 一二美女精品欧洲| 91国语精品自产拍在线观看性色| 久久综合免费视频影院| 一区二区三区国产在线观看| 国产成人精品免高潮费视频| 国产99久久精品一区二区| 亚洲综合精品一区二区| 色狠狠av一区二区三区香蕉蜜桃| 中文字幕欧美精品日韩中文字幕| 青草热久免费精品视频| 国产精品久久久久久久久久久久久久| 超碰日本道色综合久久综合| 国产精品久久999| 精品国产精品三级精品av网址| 亚洲а∨天堂久久精品喷水| 亚洲影院色无极综合| 日韩一区二区福利| 国产精品视频播放| 欧美日韩一区二区在线播放| 中文字幕久精品免费视频| 久久亚洲综合国产精品99麻豆精品福利| 久久视频在线直播| 亚洲第一综合天堂另类专| 久久久国产精品一区| 综合激情国产一区| 日韩av在线影视| 中文字幕日韩精品在线| 国产精品稀缺呦系列在线| 国产日韩欧美日韩大片| 欧美激情视频在线免费观看 欧美视频免费一| 中文字幕久热精品视频在线| 日韩欧美中文第一页| 亚洲欧美999| 综合网日日天干夜夜久久| 欧美精品第一页在线播放| 精品人伦一区二区三区蜜桃网站| 久久久久国产精品www| 伊人av综合网| 亚洲精品久久久久久久久久久| 欧美性感美女h网站在线观看免费| 日韩欧美精品免费在线| 57pao成人国产永久免费| 日本在线观看天堂男亚洲| 国产精品女人网站| 欧美性jizz18性欧美| 91av在线国产| 成人免费视频网| 日本欧美在线视频| 欧美黑人国产人伦爽爽爽| 中文字幕亚洲欧美一区二区三区| 一区二区三区无码高清视频| 欧美日韩福利电影| 91九色国产社区在线观看| 欧美成人h版在线观看| 久久久91精品国产| 亚州精品天堂中文字幕| 日韩av有码在线| 国产精品99久久久久久白浆小说| 欧美国产高跟鞋裸体秀xxxhd| 91精品一区二区| 成人综合网网址| www国产亚洲精品久久网站| 欧美老女人性视频| 97av视频在线| 日本一区二区三区在线播放| 亚洲欧美中文在线视频| 伊人成人开心激情综合网| 亚洲人成77777在线观看网| 国产中文字幕亚洲| 亚洲欧美日韩网| 国产精品一区二区3区| 国产精品色午夜在线观看| 色黄久久久久久| 成人久久18免费网站图片| 97视频在线观看免费高清完整版在线观看| 九九久久久久99精品| 亚洲午夜精品久久久久久性色| 欧美福利视频网站| 国产区精品在线观看| 久久国产视频网站| 欧美日韩性生活视频| 国产女精品视频网站免费| 成年人精品视频| 性金发美女69hd大尺寸| 亚洲欧美制服综合另类| 亚洲精品电影网在线观看| 日本国产欧美一区二区三区| 亚洲欧美日韩图片| 国产精品色婷婷视频| 亚洲第一中文字幕| 成人妇女淫片aaaa视频| 久久久久久久一区二区| 欧美日韩在线一区| 国产精品日韩电影| 日日噜噜噜夜夜爽亚洲精品| 欧美大肥婆大肥bbbbb| 亚洲第一页自拍| 日韩欧美有码在线| 亚洲欧美国产日韩天堂区| 国产一区av在线| 国产精品久久久久久久午夜| 亚洲欧美日韩一区二区三区在线| 日韩av电影手机在线| 日韩av影视综合网| 欧美日韩中国免费专区在线看| 成人国产精品免费视频| 久久久久久久久中文字幕| 亚洲综合视频1区| 中文字幕欧美精品日韩中文字幕| 亚洲欧美成人精品| 国产精品一区二区在线| 亚洲欧美日韩高清| 国产视频福利一区| 久久躁日日躁aaaaxxxx| 久久久亚洲福利精品午夜| 国产一区二区久久精品| 成人午夜在线影院| 日韩精品高清在线| 中文字幕欧美日韩精品| 国产精品久久不能| 精品国产精品三级精品av网址| 在线看片第一页欧美| 亚洲天堂2020|