Mostrar Excel al vuelo
Hola a todos:
Estoy intentando mostrar un archivo Excel al vuelo y no hay forma, espero alguien me pueda ayudar.
private Excel.Application appExcel;
appExcel = new Excel.Application();
...
oLibro.SaveAs(sFichero, m_objOpt, m_objOpt,m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlExclusive,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
oLibro.Close(false, m_objOpt, m_objOpt);
....
El archivo xls se genera bien y lo guardo en el servidor en una ruta especificada en sFichero, ahora quiero hacer el 'post' al cliente para mostrarselo y eso es lo que no se...
Mi codigo:
Response.Buffer = true;
Response.Clear();
StreamReader st = new StreamReader(sFichero);
string stbuffer = st.ReadToEnd();
//Si es una imagen
//Response.ContentType="image/gif";
//Si es un documento pdf o Word
//Response.ContentType="application";
Response.AddHeader("Content-Disposition", "inline;filename=" + sFichero.Trim());
byte[] buffer=new byte[stbuffer.Length];
int contador=0; //para ficheros muy grandes deberia ser long, y habria que 'castear' long a (int)
while (contador < stbuffer.Length)
{
buffer[contador] = (byte)Asc(stbuffer.Substring(contador, 1));
contador++;
}
Response.BinaryWrite(buffer);
st.Close();
st = null;
Response.End();
******************************
Cualquier sugerencia o idea, gracias por adelantado. Un saludo!
Estoy intentando mostrar un archivo Excel al vuelo y no hay forma, espero alguien me pueda ayudar.
private Excel.Application appExcel;
appExcel = new Excel.Application();
...
oLibro.SaveAs(sFichero, m_objOpt, m_objOpt,m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlExclusive,
m_objOpt, m_objOpt, m_objOpt, m_objOpt);
oLibro.Close(false, m_objOpt, m_objOpt);
....
El archivo xls se genera bien y lo guardo en el servidor en una ruta especificada en sFichero, ahora quiero hacer el 'post' al cliente para mostrarselo y eso es lo que no se...
Mi codigo:
Response.Buffer = true;
Response.Clear();
StreamReader st = new StreamReader(sFichero);
string stbuffer = st.ReadToEnd();
//Si es una imagen
//Response.ContentType="image/gif";
//Si es un documento pdf o Word
//Response.ContentType="application";
Response.AddHeader("Content-Disposition", "inline;filename=" + sFichero.Trim());
byte[] buffer=new byte[stbuffer.Length];
int contador=0; //para ficheros muy grandes deberia ser long, y habria que 'castear' long a (int)
while (contador < stbuffer.Length)
{
buffer[contador] = (byte)Asc(stbuffer.Substring(contador, 1));
contador++;
}
Response.BinaryWrite(buffer);
st.Close();
st = null;
Response.End();
******************************
Cualquier sugerencia o idea, gracias por adelantado. Un saludo!
Despues de mucho 'pegarme' con esto e ir viendo por Internet algunas cosillas, he llegado a esta solucion, que espero os sirva:
Response.Buffer = true;
Response.Clear();
Response.ContentType="application/excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + sFichero.Trim());
FileStream stream = File.OpenRead(sFichero);
byte[] buffer = new Byte[stream.Length];
int contador = 0;
while (contador < stream.Length)
{
buffer[contador] = (byte)stream.ReadByte();
contador++;
}
Response.BinaryWrite(buffer);
stream.Close();
Response.End();
Un saludo.
Response.Buffer = true;
Response.Clear();
Response.ContentType="application/excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + sFichero.Trim());
FileStream stream = File.OpenRead(sFichero);
byte[] buffer = new Byte[stream.Length];
int contador = 0;
while (contador < stream.Length)
{
buffer[contador] = (byte)stream.ReadByte();
contador++;
}
Response.BinaryWrite(buffer);
stream.Close();
Response.End();
Un saludo.
