2010-04-22 64 views
6
static void Main() 
{ 
    Application excelapp = new Application(); 
    Workbook book = excelapp.Workbooks.Open(@"C:\HWYFAB.xlsx", 
    0, false, 5, "", "", false, XlPlatform.xlWindows , "", 
    true, false, 0, true, false, false); 

    Worksheet sheet = (Worksheet)book.Sheets[1]; 

    Range cell = (Range)sheet.Cells[3, 2]; 
    Console.WriteLine(cell.Text); 
    cell.ClearContents(); 
    book.Close(true, "HWYFAB.xlsx", false); 
    excelapp.Quit(); 
} 

Este programa se ejecuta y sale como se esperaba. Imprime el valor correcto que está en la celda B3 a la consola. Al cerrar me pregunta si quiero reemplazar el archivo existente. Hago clic en sí Cuando abro la hoja de cálculo en Excel, el valor todavía está en la celda B3 a pesar de la celda.ClearContents().Guardar hoja de cálculo de Excel con Interop C#

¿Alguna idea?

Respuesta

5

Su llamada al cell.ClearContents() borrará las fórmulas y las constantes de valor de la celda. Esto debería estar funcionando. Puede confirmar esto después de su llamada al cell.ClearContents() probando si cell.Value2 == null, que debería ser true.

Creo que el problema con su código está en la llamada al book.Close(true, "HWYFAB.xlsx", false). El problema es que está pasando explícitamente el nombre de su libro de trabajo, pero está dejando el camino. (Tenga en cuenta que cuando abre el libro de trabajo, está incluyendo la ruta completa, incluido el directorio "C: \".) Al guardar la ruta completa al libro de trabajo cuando guarda, está guardando en el directorio actual, que podría ser " Mis documentos "o en cualquier otro lugar.

Si desea guardar el libro en su lugar, en su ubicación original, debe pasar Type.Missing para el parámetro Filename. Por ejemplo:

book.Close(true, Type.Missing, false); 

Esta idea no se ha probado, pero estoy bastante seguro de que esto debería funcionar para usted. Pruébalo ...

- Mike

+0

Eso hizo el truco. Es muy extraño, hice una búsqueda en mi computadora para todas las copias HWYFAB.xlsx, y solo había una en C: \. Gracias. – Wesley

+0

Muy raro ... Es posible que tengas que intentar buscar ubicaciones no indexadas, supongo. Me alegro de que hayas superado tu problema! –

Cuestiones relacionadas