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.

Cómo generar archivos de salida en formato Excel para cada columna de A, es decir, archivos de salida para la Aplicación y los Datos, utilizando código Perl.

Este es el archivo de entrada que está en formato de Excel:

|A   |B|C     |  D |
|----|-|------|----|
|APP |1|210101| 8.1|
|APP |2|210102| 8.2|
|APP |3|210103| 8.3|
|Data|4|210104| 8.4|
|Data|5|210105| 8.5|
|Data|6|210106| 8.6|

¿Cómo generar archivos de salida en formato de Excel de la siguiente manera, utilizando Perl?

Archivo de salida 1 (contiene solo los datos de las filas de APP):

|A |B     |C  |
|--|------|---|
|1 |210101|8.1|
|2 |210102|8.2|
|3 |210103|8.3|

Archivo de salida 2 (contiene solo los datos de las filas de Data):

|A |B     |C  |
|--|------|---|
|4 |210104|8.4|
|5 |210105|8.5|
|6 |210106|8.6|
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para generar los archivos de salida en el formato requerido, siga los siguientes pasos en Perl:

    1. Instale los módulos necesarios (si aún no están instalados) para manejar archivos de Excel. Los módulos recomendados son Spreadsheet::ParseExcel, Spreadsheet::WriteExcel y Spreadsheet::ParseExcel::SaveParser.
    2. Utilice el módulo Spreadsheet::ParseExcel para leer el archivo de Excel de entrada y obtener los datos necesarios. Por ejemplo, para leer las columnas A, B y D del archivo de entrada:

    use Spreadsheet::ParseExcel;
    
    my $parser = Spreadsheet::ParseExcel->new();
    my $workbook = $parser->parse('input_file.xls');
    
    if ( !defined $workbook ) {
        die $parser->error(), ".\n";
    }
    
    my $worksheet = $workbook->worksheet(0); #asumiendo que los datos están presentes en la primera hoja
    
    my $app_data = [];
    my $data_data = [];
    
    for ( my $row = 1; $row <= $worksheet->max_row(); $row++ ) {
        my $cell_a = $worksheet->get_cell($row, 0); #valor en la columna A
        my $cell_b = $worksheet->get_cell($row, 1); #valor en la columna B
        my $cell_d = $worksheet->get_cell($row, 3); #valor en la columna D
    
        if ( defined $cell_a && $cell_a->value() eq 'APP' ) {
            push @$app_data, [$cell_b->value(), $worksheet->get_cell($row, 2)->value(), $cell_d->value()];
        }
    
        if ( defined $cell_a && $cell_a->value() eq 'Data' ) {
            push @$data_data, [$cell_b->value(), $worksheet->get_cell($row, 2)->value(), $cell_d->value()];
        }
    }
    
    1. Cree los archivos de Excel de salida utilizando el módulo Spreadsheet::WriteExcel y escriba los datos en ellos. Por ejemplo, para crear el archivo de salida 1:
    use Spreadsheet::WriteExcel;
    
    my $workbook1 = Spreadsheet::WriteExcel->new('output_file1.xls');
    my $worksheet1 = $workbook1->add_worksheet();
    
    for ( my $row = 0; $row < scalar(@$app_data); $row++ ) {
        $worksheet1->write($row, 0, $app_data->[$row][0]);
        $worksheet1->write($row, 1, $app_data->[$row][1]);
        $worksheet1->write($row, 2, $app_data->[$row][2]);
    }
    
    $workbook1->close();
    

    De manera similar, cree el archivo de salida 2 utilizando el arreglo $data_data.

    Nota: Los fragmentos de código anteriores son solo un ejemplo básico y podrían requerir modificaciones basadas en los requisitos y restricciones exactas del proyecto o tarea.

Comments are closed.