Ci sono due domande qui. Il primo è relativamente facile, il secondo è complesso.
1. Perché la mia scheda croce viene troncata in Excel?
2.Come regolare dinamicamente l'ampiezza della pagina master in base al numero di colonne nel report in fase di esecuzione?
A1: La scheda Trasversale viene interrotta perché le larghezze delle colonne sono state impostate manualmente, dove il numero di colonne si espanderà oltre la larghezza impostata della pagina Master. Ogni volta che si riprende l'elemento di progettazione del report e si regola, BIRT presuppone che tu sappia cosa stai facendo e non sovrascrive le tue impostazioni.
La soluzione è ricreare l'elemento del report (tabella o croce) e non modificare manualmente le dimensioni. Quando vengono eseguiti in HTML o Excel, tutte le colonne verranno automaticamente impostate per essere visualizzate nella larghezza della pagina mastro disponibile.
Screen shot di un BIRT 4.2 Tab Croce, Riporta articolo con una larghezza di pagina master 2 pollici e 30 colonne

A2: Questo non è facile, e non fornirà la risposta a questa volta. Indicherò la soluzione e individuerò un paio di blocchi stradali. Una soluzione valida a questa domanda deve includere una soluzione funzionante che utilizza il database di esempio.
(come di BIRT 4.2.1)
Challenge1 - La pagina Larghezza Master sorge BIRT Report Scripting in eventi che precede la relazione tabella o Croce voce Tab in fase di completamento. Non puoi semplicemente contare quante colonne ci sono nel rapporto;
Se si voleva contare, colonne -
progettazione di report intialize
columnCount = 0;
Tab Croce, onCreate
columnCount ++;
Nella mia ricerca ci sono due percorsi suggeriti per il conteggio colonne preventiva all'elemento Tab incrociato creato. In entrambi i
eseguire il set di dati nel beforeFactory (questo significa due query al database, uno a contare e uno per il rapporto), quindi ottenere un conteggio e usarlo.
Calcolare il valore nella query iniziale e raccoglierlo nel dataset, onFetch.
Ho seguito l'opzione Data Set, onFetch, utilizzando una colonna calcolata ma non è riuscita a farlo funzionare.
Sfida2 - La proprietà Larghezza della pagina mastro deve essere impostata sopra o prima del disegno del rapporto, prima del rango. Con il beforeFactory è il più spesso raccomandato. Inoltre, la proprietà Larghezza della pagina master è disponibile solo quando il "Tipo" della pagina master è impostato su "Personalizzato", nei miei tentativi l'ho impostato manualmente nell'Editor delle proprietà Generale.
Il passaggio dei valori da onFetch a beforeFactory deve essere eseguito utilizzando PersistentGlobalVariable che può solo passare stringhe, non interi. Ho trovato tutti i modi in cui questo non funziona. Anche passando "12in" in PersistentGlobalVariable non è riuscito a regolare la pagina master Larghezza
Uno di questi codici in beforeFactory regolerà la larghezza della pagina Master (quando Tipo = personalizzato)
passare il valore
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width","12in");
calcolare un valore e passarlo
increaseWidth = 20;
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width",((2+increaseWidth)+"in"));
alla fine sono stato in grado di trovare o creare un rapporto funzionale che regola la pagina master W idth passato sulle colonne numeriche generate in fase di esecuzione del report. Penso che sia possibile, ma farlo va oltre le mie attuali competenze.
Suggerirei di caricare un file di esempio da qualche parte dell'output del BIRT, come lo vedi in Excel e come vorresti vederlo, in modo che possiamo lavorare con qualcosa. Evitare i dati personali/sensibili e pubblicare un collegamento di visualizzazione/download – Apostolos55
Sfortunatamente, non sono più nella società per cui stavo lavorando quando ho fatto questa domanda. Lo farei sicuramente se lo fossi. Dal momento che non lo sono, non ho più accesso al codice che causa il problema o all'output risultante. Credo che abbiamo finito per utilizzare la "soluzione" di larghezza arbitrariamente grande. Non ero davvero soddisfatto, ma ha funzionato abbastanza bene al momento. – radicaledward101
Questa domanda dovrebbe essere chiusa, in generale BIRT esporterà tutte le colonne per eccellere, anche con l'emmitter out of the box. Questa è una domanda una tantum su un problema specifico in un rapporto, in cui il rapporto non è disponibile per la risoluzione dei problemi. Quindi non è possibile rispondere a questa domanda. –