Написание XLSX-файлов (Java-эквивалент библиотеки pandas на python)

#java #python #pandas #xlsx

Вопрос:

Я пытаюсь создать файлы xlsx с несколькими листами.

Несколько похоже на то, как я могу добиться этого в python с помощью библиотеки pandas.

Ниже приведен пример того, что я хочу воспроизвести на java.

     def print_to_excel(simulationRunNumber, detail_report):
        # Create the worksheets
        df1 = pd.DataFrame({'No. of Gateways': [p.Gn], 'Total No. of Devices': [
            p.Gn * p.Dn], 'Total No. of Blocks': [Statistics.total_blocks], 'Blocks per Chain': [Statistics.total_blocks/p.Gn], 'Max TX List Size': [p.maxTxListSize], 'Total Transcations': [p.Gn*p.Dn*p.Tn], 'Average Transaction Latency': [Statistics.average_transaction_latency], 'Transaction Throughput': [
            Statistics.transaction_throughput], 'Simulation Duration (secs)': [Statistics.simulation_duration]})

        df2 = pd.DataFrame({'No. of Gateways': [p.Gn], 'No. of Devices per Gateway': [
            p.Dn], 'Total No. of Devices': [p.Gn*p.Dn], 'Total No. of Nodes': [p.Nn], 'Transactions per Device': [p.Tn]})

        if detail_report:
            df3 = pd.DataFrame(Statistics.chains)
            df3.columns = ['Gateway Node ID', 'Block Depth', 'Block ID',
                           'Previous Block ID', 'Block Timestamp', 'No. of Transactions']

            df4 = pd.DataFrame(Statistics.transactions)
            df4.columns = ['Gateway Node ID', 'Tx ID', 'Sender Node ID',
                           'Receiver Node ID', 'Tx Creation Time', 'Tx Reception Time', 'Tx Insertion Time']

            df5 = pd.DataFrame(Statistics.transaction_latencies)
            df5.columns = ['TxID', 'Latency']

        # Setup the filename
        fname = "Statistics-{0}-{1}.xlsx".format(
            datetime.now().strftime("%d.%m.%Y-%H.%M.%S"), (simulationRunNumber   1))

        # Save worksheets into the workbook
        writer = pd.ExcelWriter(fname, engine='xlsxwriter')
        df1.to_excel(writer, sheet_name='Results')
        df2.to_excel(writer, sheet_name='InputConfig')
        if detail_report:
            df3.to_excel(writer, sheet_name='GatewayBlockchains')
            df4.to_excel(writer, sheet_name='GatewayTransactions')
            df5.to_excel(writer, sheet_name='transaction_latencies')
        writer.save()
 

Ответ №1:

Это первый результат поиска «java write xlsx» в Google:

https://www.codejava.net/coding/how-to-write-excel-files-in-java-using-apache-poi