上午給系統的訂單管理部分添加了一個功能,把查詢到的訂單信息導出到excel,供管理員分析用。以前寫的代碼如下:
response.clear();
response.bufferoutput = true;
response.charset = "gb2312";
response.appendheader("content-disposition","attachment;filename = filename.xls");
response.contentencoding = encoding.getencoding("gb2312");
response.contenttype = "application/ms-excel";
this.enableviewstate = false;
system.globalization.cultureinfo myinfo = new system.globalization.cultureinfo("zh-cn", true);
stringwriter osw = new stringwriter(myinfo);
htmltextwriter ohtw = new htmltextwriter(osw);
dgqueryresult.rendercontrol(ohtw);
response.write(osw);
response.end();
我的查詢用了分頁,客戶要求把所有查詢到的數據都導出到excel,所以不能象以前那樣通過把控件的內容導出到excel來實現此功能,于是把代碼改成這樣:
response.clear();
response.bufferoutput = true;
response.charset = "gb2312";
response.appendheader("content-disposition","attachment;filename = 訂單.xls");
response.contentencoding = system.text.encoding.getencoding("gb2312");
response.contenttype = "application/ms-excel";
string strexcelheader = string.empty;
string strexcelitems;
if(viewstate["sql"] != null) // 取前面查詢用的sql語句
{
// 取得各列標題,各標題之間以/t分割,最后一個列標題后加回車符
strexcelheader = "訂單號/t經銷商/t地區/t小類/t商品/t實付金額/t下單時間/t有效狀態/t處理狀態/t/n";
// 向http輸出流中寫入取得的數據信息
response.write(strexcelheader);
// 逐行處理查詢結果數據
itdbhandle itdbhandle = new itdbhandle();
itdbhandle.querystring = viewstate["sql"].tostring();
sqldatareader reader = itdbhandle.executedatareader();
while(reader.read())
{
strexcelitems = string.empty;
strexcelitems += reader["orderid"].tostring() + "/t";
strexcelitems += reader["dealername"].tostring() + "/t";
strexcelitems += reader["city"].tostring() + "/t";
strexcelitems += reader["smallclassname"].tostring() + "/t";
strexcelitems += reader["brandname"].tostring() + reader["model"].tostring() + "/t";
strexcelitems += reader["totalprice"].tostring() + "/t";
strexcelitems += reader["orderdate"].tostring() + "/t";
strexcelitems += reader["isvalid"].tostring() + "/t";
strexcelitems += reader["dealstate"].tostring() +"/n";
response.write(strexcelitems);
}
reader.close();
response.end();
}
我這里只是簡單的把查詢到的數據以excel的形式write出來(當然也可以是其他格式,比如xml),對簡單的需求足矣了,當然,用.net直接去操作excel文件也是很簡單的,有很多這樣的例子可以參考。
新聞熱點
疑難解答