c # Excel Interop _Workbooks.Open

Foxtrek_64

Estoy escribiendo la aplicación ac # WinForms en Microsoft Visual Studio. Nuestro equipo de datos me proporciona un informe diario en formato .csv y necesito mostrar los resultados visualmente. Sin embargo, este programa se escribió originalmente para manejar archivos .xlsx, así que en lugar de reescribir todo mi código para manejar .csv, he decidido que sería más fácil convertir el archivo a .xlsx y luego dejar el resto del código como está. .

Entonces, modifiqué la primera parte de mi método drawCharts () que es responsable de recopilar la información del xlsx y representarla como gráficos de Excel.

Mi investigación me ha mostrado dos formas de leer archivos externos en un libro de Excel, la primera usando Workbooks.Open, la segunda usando Workbooks.OpenText.

Aquí está mi código:

    private void drawCharts()
    {
        //Declare variables for use
        //These first three values are going to be used later and can be ignored.
        Excel.Application xlApp = null;
        Excel.Workbook xlWorkbook = null;
        Excel.Worksheet xlWorksheet = null;
        object misValue = System.Reflection.Missing.Value;

        string path = "\\\\Data\\Departmental Data\\TechSupport\\_Report"

        //define the actual file path. Separate because I use the path variable elsewhere
        string source = Path.Combine(path, "report.csv");

        //define the destination file. Using Environment.UserName so multiple people can run this program at the same time, all using unique files except when they first load. There's probably a better way of doing this.
        string use = Path.Combine(path, "Report-" + Environment.UserName + ".xlsx");

        //A boolean telling the program to exit if there was an error
        bool shouldExit = false;
        Excel.Application app = null; //Temporary application used for opening the csv

        try
        {
            MessageBox.Show("Opening file " + source);
            app = new Excel.Application();
            Excel.Workbook wb = app.Workbooks.Open(source); //source points to the csv. This is the line that fails.
            MessageBox.Show(String.Format("Saving {0} as {1}", source, use));
            wb.SaveAs(use, Excel.XlFileFormat.xlOpenXMLWorkbook);
            wb.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            shouldExit = true;
        }
        finally
        {
            if (app != null) { app.Quit(); }
            releaseObject(app);
            if (shouldExit) { Environment.Exit(1); }
        }

        //Rest of the code...
}

La línea ofensiva es la Excel.Workbook wb = app.Workbooks.Open(source);. Cuando se ejecuta esta línea, Excel arroja un error que indica que el archivo no se pudo abrir porque no se pudo encontrar. Investigando esto, encontré este artículo que decía que debería cambiarlo a Excel.Workbook wb = app.Workbooks.OpenText(source). Sin embargo, eso solo causa un error del compilador que indica Cannot implicitly convert type 'void' to 'Microsoft.Office.Interop.Excel.Workbook'.

Cualquier idea sería apreciada.

Foxtrek_64

Entonces, después de investigar un poco, encontré mi error. La ruta del archivo había cambiado porque se cambió el nombre de la carpeta en la que residía el .csv. Al verificar si la ruta del archivo era correcta, había estado buscando en mi directorio de prueba en lugar del directorio de producción, por lo que todo parecía correcto.

Siempre son las cosas pequeñas ...

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

c # Excel Interop _Workbooks.Open

Exception HResult 0x800a03ec when trying to open Excel with Microsoft.Office.Interop.Excel.Workbooks.Open()

C # Как читать и записывать данные из Excel с помощью Interop, не делая Excel видимым?

Excepción HResult 0x800a03ec al intentar abrir Excel con Microsoft.Office.Interop.Excel.Workbooks.Open ()

C # COM Interop Excel: как писать в ячейки из C # с помощью Interop Excel?

Visual C # Установка нескольких ячеек одновременно с помощью Excel Interop

c # interop excel - как получить значение координат, указав значение ячейки

Excel VBA Workbooks.open avec des paramètres facultatifs

Excel VBA: Workbooks.Open devuelve el objeto incorrecto

Excel VBA Workbooks.open con parámetros opcionales

Wie Open Stream oder Base64 der Excel-Datei von Office.Interop.Excel C #

Excel Interop - предотвращение изменения размера диаграммы со строками и столбцами

VBA Excel Workbooks.Open funciona solo si lo he abierto manualmente primero

Fusionar celdas de Excel con C # usando Interop.Excel

C # - Microsoft.Office.Interop.Excel.Sheets à Microsoft.Office.Interop.Excel.Worksheet []

Workbooks.open devuelve Nothing

Cómo fusionar un rango de Excel Interop C #

C # Interop записывает массив массивов на лист

Detect pivot table in Microsoft Excel using Interop c#

Cómo mezclar Excel Interop con ClosedXml: estilos

C # Leer datos usando Microsoft.Office.Interop.Excel

Establecer el ancho de columna en C # (Interop.Excel)

Establecer el ancho de columna en C # (Interop.Excel)

Guardar sobrescritura y cambios con Excel.Interop C #

C# Excel Interop Chart Column Series Problem

Unprotect the Excel workbooks in a specified path and refresh the workbook conection and then protect the workbooks

Unprotect the Excel workbooks in a specified path and refresh the workbook conection and then protect the workbooks

Detecta una celda de Excel en blanco usando interop.excel en C #

Détecter la cellule Excel vide à l'aide d'interop.excel en C #

TOP Lista

CalienteEtiquetas

Archivo