2016-10-31 9 views
0

(Сво примитивного кода и его правильно работает около 10000 строк)не в состоянии загрузить Excel при использовании Response.Flush для каждой строки

fileName = excelTemplate+".xls" 
Response.Write "<html><body><table>" 
For Loop for more then 150000 Rows 
{ 
    Response.Write "<tr><td>..........</td></tr>" 
} 
Response.Write "</table></body></html>" 
Response.AddHeader "content-disposition", "attachment; filename=""" & fileName & "" 
Response.Charset = "UTF-8" 
Response.ContentType = "application/vnd.ms-excel"   
Response.Flush 

Я получаю сообщение об ошибке размера буфера (Выполнение страницы ASP . вызвал буфер ответа превысить его конфигурацию предела)

Я попытался Response.Flush внутри цикла:

For Loop for more then 150000 Rows 
{ 
    Response.Write "<tr><td>..........</td></tr>" 
    Response.Flush 
} 

Теперь я не получаю предельный размер выпуска, но не в состоянии Дау nload excel .. (Весь вывод отображается на веб-странице)

Пройдя несколько блогов, я нашел другое исправление этой проблемы - увеличить размер буфера от IIS, но просто хотел узнать, есть ли какие-либо OTHR альтернатива этому вопросу ..

+0

Возникает ли эта ошибка в IIS? Если да, то какая версия IIS используется? – JohnH

+0

@John Я использую IIS 7 – Scorpio

+0

Вы пытались отключить буфер вместо промывки? На странице asp добавьте '<% Response.Buffer = False%>' –

ответ

0

Вам нужно будет переместить Response.ContentType, Response.Charset & Response.AddHeader перед первым Response.Write

<% 
    Response.Buffer = True 
    ... 
    fileName = excelTemplate+".xls" 
    Response.AddHeader "content-disposition", "attachment; filename=""" & fileName & "" 
    Response.Charset = "UTF-8" 
    Response.ContentType = "application/vnd.ms-excel"   
    Response.Write "<html><body><table>" 
    For Loop for more then 150000 Rows 
    { 
     Response.Write "<tr><td>..........</td></tr>" 
     Response.Flush 
    } 
    Response.Write "</table></body></html>" 
    Response.Flush 
%>