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.
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
Déjame decir algunas palabras