Crear un NetLogic que exporte datos de tabla a CSV

Exportar datos del proyecto a un archivo CSV.
CONSEJO:
En lugar de crear un script desde cero, puede usar uno predefinido. La implementación de un script predefinido es distinta de la implementación de un script personalizado.
Para obtener más información, seleccione
Bibliotecas de plantillas
en la barra de herramientas y busque
Generic Table Exporter
Requisitos previos
Establezca el editor de código externo predeterminado. Consulte Establecer el editor de código predeterminado.
  1. Para crear un NetLogic que exporte datos de tabla a CSV
  2. En
    Vista del proyecto
    , haga clic con el botón derecho en la carpeta
    NetLogic
    y seleccione
    Nuevo
    NetLogic de tiempo de ejecución
    .
  3. Pase el cursor por encima de NetLogic, seleccione
    Edit
    y escriba
    ExportTableData
    .
  4. Haga doble clic en NetLogic.
    Se abre el editor de código externo.
  5. En el editor de código, reemplace el código existente por el siguiente código:
    using System; using FTOptix.Core; using Store = FTOptix.Store; using HMIProject = FTOptix.HMIProject; using UAManagedCore; using System.IO; public class ExportTableData : FTOptix.NetLogic.BaseNetLogic { [FTOptix.NetLogic.ExportMethod] public void ExportCSV(UAManagedCore.NodeId tableNodeId) { // Getting the current project var project = HMIProject.Project.Current; // Getting the object table from its NodeId var tableObject = LogicObject.Context.GetObject(tableNodeId); if (tableObject == null) return; // Getting the Tables collection var tablesCollection = tableObject.Owner; if (tablesCollection == null) return; // Getting the Store var storeObject = tablesCollection.Owner as Store.Store; object[,] resultSet; string[] header; // Execute query on store of the current project storeObject.Query("SELECT * FROM \"" + tableObject.BrowseName + "\"", out header, out resultSet); // Check if the resultSet is a bidimensional array if (resultSet.Rank != 2) return; // Getting the number of rows and columns of the matrix var rowCount = resultSet != null ? resultSet.GetLength(0) : 0; var columnCount = header != null ? header.Length : 0; // Outpt file path string filePath = Path.Combine(project.ApplicationDirectory, "CSVExport-" + tableObject.BrowseName + "-" + DateTime.UtcNow.ToString("yyyyMMddHHmmss") + ".csv"); Log.Info(filePath); // Writing CSV to file try { using (StreamWriter csvFileStream = new StreamWriter(filePath)) { // Table header for (UInt32 i = 0; i < columnCount; i++) { csvFileStream.Write(header[i]); if (i < columnCount - 1) csvFileStream.Write(";"); } csvFileStream.Write("\n"); // Table content for (UInt32 i = 0; i < rowCount; i++) { for (UInt32 j = 0; j < columnCount; j++) { if (resultSet[i, j] == null) csvFileStream.Write(""); csvFileStream.Write(resultSet[i, j]); if (j < columnCount - 1) csvFileStream.Write(";"); } csvFileStream.Write("\n"); } } } catch(Exception e) { // Write the error in the log UAManagedCore.Logging.LogManager.CoreLogger.Log( UAManagedCore.Logging.LogLevel.Error, "", 0, 0, "Unable to export table '" + tableObject.BrowseName + "' to CSV file '" + filePath + "': " + e.Message, ""); } } }
  6. Guarde el código.
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.