FileStream cambia la extensión

El código abre el archivostream para guardar un archivo de Excel de los recursos incrustados. Este archivo se traslada a la ubicación guardada en el servidor y tiene que ser abierto.

Da el siguiente error

el formato de archivo y la extensión no coinciden

Si usted mira en el archivo de Excel es "Thinks" es un .xltx

Mientras que en todas partes en el código y en el archivo original es .xls

Esto sólo sucede en un ordenador todos los demás lo ahorran y lo abren como .xls

¿Puedo forzar la extensión al guardar o ignorar la falla de extensión al abrir?

saveLocationAndFileName = saveLocation + Order + "_" + Name + ".xls";
string TempfileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString()+ ".xls";

Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Resources.04.06 Checklist.xls");
FileStream fileStream = new FileStream(TempfileName, FileMode.CreateNew);
for (int i = 0; i < stream.Length; i++)
    fileStream.WriteByte((byte)stream.ReadByte());
fileStream.Close();

//move temp file to server and rename
File.Copy(TempfileName, saveLocationAndFileName);
//delete temp file
File.Delete(TempfileName);

Excel.Application app = new Excel.Application();
app.DisplayAlerts = false;
Excel.Workbook wb = app.Workbooks.Open(saveLocationAndFileName, CorruptLoad: true);

Pregunta hecha hace 3 años, 4 meses, 29 días - Por compilerczar


2 Respuestas:

  • El error "el formato de archivo y la extensión no coinciden" indica que la extensión del archivo no coincide con el formato real del archivo. En tu caso, estás intentando abrir un archivo con extensión ".xls" que en realidad es un archivo de plantilla de Excel con extensión ".xltx".

    Para corregir esta situación, puedes intentar cambiar la extensión del archivo guardado en el servidor a ".xls" antes de abrirlo. Puedes hacerlo con el siguiente código:

    csharp
    // Cambiar la extensión del archivo guardado en el servidor a ".xls"
    string saveLocationAndFileName = saveLocation + Order + "_" + Name + ".xls";
    string actualFileExtension = ".xltx"; // Extensión real del archivo
    
    // Renombrar el archivo en el servidor con la extensión correcta
    string saveLocationWithCorrectExtension = Path.ChangeExtension(saveLocationAndFileName, ".xltx");
    if (File.Exists(saveLocationAndFileName))
    {
        File.Move(saveLocationAndFileName, saveLocationWithCorrectExtension);
    }
    
    // Abrir el archivo con la extensión correcta
    Excel.Application app = new Excel.Application();
    app.DisplayAlerts = false;
    Excel.Workbook wb = app.Workbooks.Open(saveLocationWithCorrectExtension, CorruptLoad: true);
    

    De esta manera, renombras el archivo guardado en el servidor con la extensión correcta antes de abrirlo en Excel. Esto debería evitar el error relacionado con la extensión incorrecta.

    Respondida el Dec 18, 2020 a las 11:08 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás recibiendo se debe a que la extensión del archivo que estás guardando (.xls) no coincide con el formato real del archivo, que es .xltx. Para resolver este problema, puedes hacer lo siguiente:

    Forzar la extensión al guardar:

    c

    saveLocationAndFileName = saveLocation + Order + "_" + Name + ".xltx";

    Esto cambiará la extensión del archivo que se guarda a .xltx, que coincide con el formato real.

    Ignorar el error de extensión al abrir:

    Si no puedes cambiar la extensión del archivo al guardar, puedes ignorar el error de extensión al abrirlo utilizando el siguiente código:

    c

    // Ignorar el error de extensión de archivo

    object missing = Type.Missing; wb = app.Workbooks.Open(saveLocationAndFileName, UpdateLinks: false, CorruptLoad: true, ReadOnly: true, IgnoreReadOnlyRecommended: true);

    Esto evitará que se muestre el error de extensión de archivo al abrir el archivo.

    Nota: Ten en cuenta que ignorar el error de extensión puede provocar problemas si el formato del archivo no es compatible con la extensión. Por lo tanto, es mejor cambiar la extensión del archivo para que coincida con el formato real.

    Respondida el Dec 18, 2020 a las 11:10 - por Gemini

    Votos positivos: 0 | Votos negativos: 0