2013-01-04 12 views
7

Ho un requisito per un report SSRS 2005 da esportare come CSV, dove le intestazioni di colonna contengono spazi.È possibile esportare in CSV e l'intestazione contiene spazi?

Attualmente i titoli delle colonne di intestazione CSV derivano dai nomi delle proprietà textBox e utilizzano caratteri di sottolineatura anziché spazi. C'è un altro approccio migliore?

Ad esempio, attualmente ho:

  • SSRS Intestazione: Data di Efficacia
  • TextBox Nome: EFFECTIVE_DATE
  • CSV Intestazione: EFFECTIVE_DATE

Mi piacerebbe avere:

  • Rapporto SSRS Testa er: Data di Efficacia
  • TextBox Nome: EFFECTIVE_DATE
  • CSV Intestazione: Data di Efficacia
+0

Risolto questo problema. Puoi trovare la soluzione seguendo questo link http://stackoverflow.com/a/35406795/5929210 –

risposta

1

C'è una soluzione per questo. È necessario selezionare nelle proprietà SSRS premere F4, selezionare Proprietà, in quella casella di testo selezionare specifica che si desidera rinominare. Ad esempio, lasciare Textbox12 come data_effettiva. Soluzione: rinominare la casella di testo con EffectiveDate.

1

Ho risolto personalmente questo problema personalizzando l'estensione di rendering CSV integrata per far sì che utilizzasse la proprietà ToolTip della textbox come intestazione della colonna. La proprietà ToolTip consentirà spazi e altri segni di punteggiatura, quindi ti darà la possibilità di nominare le colonne come preferisci. Questo ha anche il piacevole effetto collaterale di darti un suggerimento rilevante, ricordandoti quale colonna stai guardando su un report lungo in cui l'intestazione potrebbe non essere visibile!

Nota: nella finestra di progettazione, si imposta la descrizione comando della casella di testo della riga di dati e non la casella di testo dell'intestazione.

Questo non è facilmente raggiungibile perché tutte le estensioni di rendering sono contrassegnate come classi sigillate. Quindi, per implementarlo, ho usato un decompilatore e ho estratto tutto il codice relativo al rendering CSV nel mio progetto. Quindi modifica la riga che scrive il testo dell'intestazione per leggere dalla proprietà ToolTip della casella di testo.

Nella classe denominata CsvColumnHeaderHandler stai cercando per il metodo OnTextBoxBegin e in particolare la linea:

this.m_visitor.WriteValue(textBox.DataElementName, this.m_excelMode); 

semplicemente cambiare questo per leggere: estensione per il rendering

this.m_visitor.WriteValue(textBox.ToolTip, this.m_excelMode); 

Questa usanza può quindi essere distribuito al server di report e funziona perfettamente.

Non è necessario sapere come scrivere un'estensione per il rendering per questo perché, come ho detto, ho appena copiato (decompilato) il codice. Tuttavia, è necessario sapere come distribuire un assembly di estensione di rendering personalizzato. Maggiori informazioni sulla distribuzione possono essere trovate qui: https://msdn.microsoft.com/en-us/library/ms154516.aspx