Sto creando una tabella HTML che verrà aperta come foglio di calcolo in Excel. Quale tag HTML o stile CSS posso usare per "dire" ad Excel di visualizzare il contenuto della cella come testo?Formatta la cella della tabella HTML in modo che Excel venga formattato come testo?
risposta
È possibile applicare la formattazione alle celle per i numeri, testo, date, ecc
Vedere la mia risposta precedente su questo: HTML to Excel: How can tell Excel to treat columns as numbers?
(frammento rettificato)
Se si aggiunge una CSS classe alla tua pagina:
.num {
mso-number-format:General;
}
.text{
mso-number-format:"\@";/*force text*/
}
e schiaffo quelle classi sul TD, funziona?
<td class="num">34</td>
<td class="num">17.0</td>
<td class="text">067</td>
C'è un problema con questa soluzione (stile css con formato numerico). In Excel viene visualizzato l'errore "Numero memorizzato come testo" che può essere inopportuno in alcuni casi. Per evitare questo problema è possibile utilizzare il carattere ZERO WIDTH SPACE (& # 8203;) all'inizio del campo.
Lascia un personaggio invisibile, ma sembra migliore! – TheStoryCoder
Questa è l'unica cosa che mi ha aiutato a forzare una cella al testo. Pre-aggiunto questo al valore e BLAMO! Testo! – Gary
Non ho abbastanza rep per commentare o per votare, ma la risposta di Raposo ha funzionato molto bene per me. Il nostro sistema importa i report SSRS e li esegue in modalità locale. Memorizza la query (i) DataSet nel database e li carica in fase di runtime. Tuttavia, per le esportazioni di Excel, esegue semplicemente i dati risultanti della query in un oggetto DataGrid e li scrive direttamente nello stream come HTML, impostando l'estensione su .xls. Mettere la soluzione di Raposo nella query DataSet del report:
SELECT someColumn = '​' + someColumn
FROM, etc.
e la rimozione nell'espressione del campo SSRS:
=Replace(Fields!someColumn.Value, "​", "")
è l'unica cosa che ho trovato che funziona. Grazie!
Soluzione eccellente! L'ho fatto come qui di seguito
HttpContext.Current.Response.Write("<style> .txt " + "\r\n" + " {mso-style-parent:style0;mso-number-format:\"" + @"\@" + "\"" + ";} " + "\r\n" + "</style>");
HttpContext.Current.Response.Write("<Td class='txt'>​");
HttpContext.Current.Response.Write(Coltext);
HttpContext.Current.Response.Write("</Td>");
e funziona bene per me
ho trovato cinque soluzioni per questo problema:
Formattare il campo come testo come descritto da scunliffe. Questo ha il problema del triangolo verde come affermato da Raposo.
Utilizzare & # 8203; come descritto da Raposo. Questo ha il problema che il valore non è realmente un numero. Questo potrebbe essere un problema se i dati vengono inseriti in un sistema per l'elaborazione.
Aggiungere il TD come <td> = "067" </td >. Questo ha lo stesso problema del # 2.
Aggiungere il TD come <td> = text (067, "000") </td >. Anche questo ha lo stesso problema del # 2.
Utilizzare una classe CSS di.text3 {mso-number-format: "000";} e aggiungi questa classe al TD. Questa è la mia soluzione preferita ma ha il problema di richiedere più classi se si hanno numeri di lunghezze diverse. Se scrivi la tua intestazione e poi esegui un'iterazione tra i tuoi dati, devi aggiungere tutte le classi possibili prima di sapere quale di esse avrai bisogno. Ma questo ha i vantaggi che il testo è davvero un numero e non c'è un triangolo verde.
È possibile risolvere il problema anche con l'aggiunta di spazio unificatore:
prima che il valore dell'elemento <td>
.
Esempio: <td> 0:12:12.185</td>
Invece di: <td>0:12:12.185</td>
impiegato troppo tempo a Google per questa soluzione .. questi tabella HTML per eccellere punte dei fogli di calcolo sono impossibili da trovare – John
brillante! essenziale per i codici di avviamento postale che iniziano con 0 – squarecandy
ha reso la mia giornata troppo ... quasi un anno dopo per trovare questo ... haha Grazie comunque :) – pojomx