Как записать значения сводной таблицы (столбцы) из панд, чтобы преуспеть с помощью openpyxl?

Единственный способ, с помощью которого я смог работать с моим кодом, был немного взломан, я сделал следующее:

TS

import { Component, OnInit, ViewChild, ElementRef  } from '@angular/core';
import { ModalModule, WavesModule, InputsModule } from 'angular-bootstrap-md'

@Component({
  selector: 'app-roommain',
  templateUrl: './roommain.component.html',
  styleUrls: ['./roommain.component.scss']
})
export class RoommainComponent implements OnInit {
  @ViewChild ('form') public formModal: any;

  constructor(private modal : ModalModule) { }

  ngOnInit() {}

  ngAfterViewInit() {
    this.formModal.show();
  }
}

По мне пробел viewChild как " любой "позволяет мне скомпилировать код с любыми ошибками, и, позвонив мне this.formModal.show(); в ngAfterViewInit(), я могу иметь все компоненты с загруженной страницы, поэтому я могу называть их конкретные методы в этом случае .show()

0
задан MGB.py 18 January 2019 в 20:36
поделиться

2 ответа

import pandas as pd;
df_excel = pd.read_excel(".\Table1.xlsx"); #Import existing excel template
df_excel.index = df_excel.index + 2 #As we have 2 empty rows in pandas pivot \
#table, we need to start filling on excel row 2 (df_excel.index + 2)

received = pvt_all.received; #reading received column in pivot table
df_excel["received"] = received; #Copying received column from Pandas to received \
#column in excel

sent = pvt_all.sent; #reading sent column in pivot table
df_excel["sent"] = sent; #Copying sent column from Pandas to sent \
#column in excel

to_send = pvt_all.to_send; #reading to_send column in pivot table
df_excel["to_send"] = to_send; #Copying to_send column from Pandas to to_send \
#column in excel

df_excel.to_excel(".\MyNewExcel.xlsx",index=False); #Writing new excel file to \
#avoid mistakes on original excel template.
0
ответ дан MGB.py 18 January 2019 в 20:36
поделиться

Простой способ: после того, как у вас есть pvt_all, просто дайте ему имя файла Excel:

pvt_all.to_excel("filename.xlsx")

См. https://pandas.pydata.org/pandas-docs/stable/ сгенерированный / pandas.DataFrame.to_excel.html для других параметров.

Более сложный путь: у вас уже есть Excel и вы хотите записать этот кадр данных в виде нового листа, сделайте так:

import pandas as pd
import openpyxl

excelfilename = "filename.xlsx"
with pd.ExcelWriter(excelfilename, engine="openpyxl") as writer:
    # above: I use openpyxl, you can change this
    writer.book = openpyxl.load_workbook(excelfilename)
    pvt_all.to_excel(writer, "pivot sheet name", index=False)
        # above: index=False to not write dataframe index

Еще сложнее: вы хотите записать в определенный диапазон ячеек, один ячейка за раз:

import openpyxl
from openpyxl.utils import get_column_letter

wb = openpyxl.load_workbook(excelfilename)
ws = wb["my sheet"]
row = 3
col = 1
data = pvt_all.values
max_row, max_col = data.shape
for r in range(max_row):
   for c in range(max_col):
       ws[get_column_letter(col+c)+str(row+r)] = data[r][c]
# don't forget to save your workbook after this
0
ответ дан adrtam 18 January 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: