es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recopile datos específicos del archivo de Excel en otro.

Tengo un archivo Sylk que estaba tratando de convertir a xls, pero en vano, intenté todas las formas posibles en Java, pero siempre me da un archivo como las imágenes que compartí aquí.
Entonces quiero extraer los datos importantes de ese archivo y escribirlos en otro archivo xls.

El algoritmo está claro en mi mente, pero no sé cómo interpretarlo en código Java.

Tengo un archivo .xls que tiene los datos desorganizados, pero con las coordenadas X, Y exactas necesito extraer esos datos y colocarlos en otro archivo xls con las coordenadas X, Y de cada información.

Los datos que necesito siempre existen en la línea que comienza con “C;”. Aquí hay una imagen de ejemplo.

Por ejemplo, en la imagen en la fila 128, necesito los datos B.C.E.A.O. En el otro archivo xls, debe estar en la celda (1,2), ya que la Y justo antes de ella es Y2 (Fila 127), y la X (Fila 126) justo antes de ella es 1.

Espero que mi solicitud sea bastante clara, puedo agregar cualquier información adicional necesitada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Para extraer los datos requeridos del archivo sylk, podemos seguir el siguiente algoritmo:

    1. Leer el archivo sylk y almacenar su contenido en una cadena de texto.
    2. Dividir la cadena de texto por el carácter de salto de línea (‘\n’) y almacenarlo en un arreglo de cadenas de texto.
    3. Recorrer el arreglo de cadenas de texto y encontrar las cadenas que empiezan con ‘C;’.
    4. Extraer los datos requeridos de las cadenas encontradas (es decir, el valor de la celda, el número de fila y el número de columna).
    5. Almacenar los datos extraídos en una clase personalizada (por ejemplo, CellData) que tenga atributos de X, Y y el valor de la celda.
    6. Agregar los objetos CellData a una lista.
    7. Usar los valores de X e Y de los objetos CellData para escribir los valores de las celdas en un nuevo archivo xls utilizando la biblioteca Apache POI de Java.

    Aquí tienes un ejemplo de código Java que implementa el algoritmo anterior:

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class SylkToXlsConverter {
    
      public static void main(String[] args) throws IOException {
        String sylkFilePath = "/ruta/al/archivo.sylk";
        List<celldata> cellDataList = new ArrayList<>();
        try (BufferedReader br = new BufferedReader(new FileReader(sylkFilePath))) {
          String line;
          int lineNumber = 0;
          String cellValue = "";
          for (int y = 1; (line = br.readLine()) != null; y++) {
            String[] values = line.split(";");
            lineNumber++;
            if (!values[0].startsWith("C;")) {
              continue;
            }
            int x = Integer.parseInt(values[0].substring(2));
            cellValue = values[2];
            cellDataList.add(new CellData(x, y - 1, cellValue));
          }
        }
        // Ahora, cellDataList tiene todos los datos de las celdas requeridos
        // Escribir los datos en un nuevo archivo xls usando Apache POI
      }
    
      private static class CellData {
        private final int x;
        private final int y;
        private final String cellValue;
    
        public CellData(int x, int y, String cellValue) {
          this.x = x;
          this.y = y;
          this.cellValue = cellValue;
        }
    
        public int getX() {
          return x;
        }
    
        public int getY() {
          return y;
        }
    
        public String getCellValue() {
          return cellValue;
        }
      }
    }
    

    Cabe destacar que este código solamente extrae los datos requeridos del archivo sylk y los almacena en una lista de objetos CellData. Para escribir los datos en un nuevo archivo xls, es necesario utilizar las clases Workbook y Sheet de Apache POI para crear un nuevo libro, crear una nueva hoja y escribir los valores de las celdas en las celdas correspondientes utilizando sus valores de X e Y.

Comments are closed.