Creare barcode EAN-13 senza usare macro con Openoffice Calc (e anche con Excel, dai)

Ultimamente, sul lavoro, mi è capitato di dover inserire codici a barre (in formato EAN-13) all’interno di fogli di calcolo, partendo dal codice che il barcode rappresenta.

La soluzione più semplice (e interoperabile, mi interessa che funzioni senza intoppi sia con OpenOffice che con Excel) è quella di usare un font che rappresenti il codice a barre. Siccome però la codifica dell’EAN non è 1-1 fra cifra e sequenza di barre-spazi, non basta inserire il codice e visualizzarlo con il font corretto: è necessario passare dal codice iniziale a una stringa che, visualizzata con il font EAN-13, rappresenti il codice a barre corretto.

La documentazione è abbondante, ma i font Truetype per rappresentare codici a barre sono per la maggior parte a pagamento: fortunatamente sono riuscito a trovare un francese che distribuisce gratuitamente un font di questo tipo, oltre a molte informazioni utili sul suo utilizzo.

Esempio

Non avendo particolare simpatia per le macro (e vorrei evitare problemi di compatibilità), ho preferito realizzare qualche formula per visualizzare il barcode a partire dal codice. Il risultato è probabilmente meno elegante, ma per i miei scopi è una soluzione migliore.

Grazie ai suggerimenti di Angelo, adesso i file funzionano correttamente anche con Excel 2002.

Installare un font Truetype

Esistono molte guide per l’installazione di un font Truetype in un sistema Ubuntu. Se usi un’altra distribuzione il procedimento sarà simile e su Google puoi trovare tonnellate di documentazione dettagliata. Per Windows, è sufficiente copiare il file TTF nella cartella C:\WINDOWS\FONTS (o C:\WINNT\FONTS).

E per i barcode EAN-8?

Poco tempo dopo la pubblicazione del post, Augusto mi ha inviato una soluzione anche per i barcode EAN-8. Lo ringrazio molto ma, purtroppo, i font necessari non sono disponibili liberamente ma vanno acquistati.

Qualche tempo dopo, Antonio mi ha scritto allegandomi una soluzione per i barcode EAN-8 che utilizza lo stesso font utilizzato per i barcode EAN-13. Mi sembra un’ottimo lavoro e lo pubblico immediatamente. Il file è un po’ “grezzo”, ma non è che il mio fosse uno splendore :)

This entry was posted in Senza categoria and tagged , , , , , , , , , . Bookmark the permalink.

69 Responses to Creare barcode EAN-13 senza usare macro con Openoffice Calc (e anche con Excel, dai)

  1. Mitico! Grazie, davvero utilissimo :)

  2. Pingback: ZicZac.it, clicca qui e vota questo articolo!

  3. Pingback: diggita.it

  4. Pingback: pligg.it

  5. Pingback: Quale tecnica cross-browser per usare i font installati sul client? - Matteo Moro

  6. Hey complimenti per il sito, ti va uno scambio link in Blogroll? Se si lasciami un commento sul mio :)

  7. Matteo says:

    @Dario:
    Grazie per i complimenti, ma niente scambio link :)

  8. Angelo says:

    Ciao,
    complimenti innanzitutto per l’applicazione ; testandolo nella versione di Excel 2002 ho trovato degli errori tipo “#N/D”.
    Il problema, a mio avviso, sta nella estrapolazione come “testo” dalla casella input, che rende inutilizzabile tale “testo” come valore numerico di calcolo.
    La soluzione che ho trovato é:
    aggiunta nelle celle D2,E2,F2,G2,H2,I2,J2,K2,L2,M2,N2,O2,P2 della funzione “Valore” prima delle funzioni di estrapolazione.
    Ad esempio, nella cella D2 da:
    =DESTRA(SINISTRA($A2;D$1);1)
    a
    =VALORE(DESTRA(SINISTRA($A2;D$1);1))

    facendo questa modifica il programma funziona ottimamente con Excel 2002.
    Ringrazio l’autore e spero che questo mio contributo possa giovare a tutti.
    Ciao

    Angelo

  9. Matteo says:

    @Angelo:
    Ti ringrazio molto per le correzioni, le ho inserite nei file da scaricare.

  10. Noc77 says:

    Sei un mito! non solo per la soluzione ma anche perche’ in due righe ho capito come funzionano i codici ean13.

    Hola!

  11. Matteo says:

    @Noc77:
    Ti ringrazio, sono felice che il post ti sia stato utile! :)

  12. NICK says:

    Grazie ..Ottimo lavoro.

    purtroppo ho verificato che il non funziona laddove il codice è di 8 cifre.
    Nonostante abbia modificato la tabella in modo da evitare il printout delle cifre successive all’ottava, il codice grafico è diverso.
    Sicuramente il file xls non prevedeva questo tipo di codice ….. ma qualcuno è in grado di aiutarmi?

    Grazie

  13. Augusto says:

    Grazie per la soluzione excel mi è tornata molto utile. Se necessita io ho sviluppato la soluzione Ean-8 con calcolo del Ceck digit in Excel e relativi font.

  14. Matteo says:

    @Augusto:
    Magari, sarebbe una gran bella cosa!

  15. Augusto says:

    Ciao ti ho mandato il tutto ! Per gestire gli Ean 8 fammi sapere se ti è interessato !!

  16. luigi says:

    chi mi può aiutare a costruire ean 8 per portare la formula in excel, con relativo font?

  17. Matteo says:

    @luigi:
    Augusto mi ha inviato un bel po’ di tempo fa la soluzione per gli EAN-8 (come puoi vedere dai suoi ultimi commenti). Con colpevole ritardo, gli ho mandato solo oggi un’ultima bozza di quello che intendo pubblicare, penso che fra qualche giorno darà tutto online. Me ne scuso con tutti gli interessati. :-(

    Per quanto riguarda gli EAN-8, i font non sono gratuiti ma vanno acquistati da questo sito: http://www.fontwarebarcodes.com/barcodes_singles.aspx

    Se qualcuno conosce alternative gratuite per i font EAN-8 si faccia sentire :)

  18. Matteo says:

    Ho aggiornato il post con il file relativo ai barcode EAN-8. Ringrazio di cuore Augusto per la collaborazione (e la pazienza, visto il tempo che ci ho messo a pubblicare il suo file).

  19. Andrea says:

    Ciao Matteo, grazie per il tuo prezioso contributo.
    Ho provato, ho stampato con successo, ma quando leggo, il lettore di codice a barre non legge nulla, mentre legge la stampa di altri EAN13. Ho stampato con varie dimensioni del font, ma il risultato non cambia. Hai qualche suggerimento ?
    Ringrazio anticipatamente.
    Andrea

  20. fabiano says:

    Ciao, io invece trovo errori nella traduzione di un codice in barcode.
    Esempio: Il codice 510030728503, viene tradotto in barcode 5100307285043, ma è sbagliato, perchè in realtà è 5100307285034.

    C’è qualcosa che sbaglio io ?

    Grazie

  21. Matteo says:

    @Andrea:
    Ciao Andrea, i problemi (escludendo la dimensione del barcode in stampa, nelle mie prove mi sono accorto che sotto i 20 c’erano problemi) possono essere di due tipi: la stampante o il dispositivo che legge il barcode. Nel mio caso non ho fatto molte prove, a dire il vero, ma non ho avuto problemi stampando con una HP Laserjet 4000 e leggendo con un terminale Denso BHT-420 (http://www.lexter.it/palmari/bht-420.htm).

    Considerato poi che il mio foglio di calcolo non controlla la correttezza del check-digit, potrebbe semplicemente essere sbagliato: alcuni lettori (compresi quelli che uso qui) rifiutano di leggere il barcode se il check-digit non è corretto.

  22. Matteo says:

    @fabiano:
    Sbagli nell’inserire solo 12 cifre. Il foglio non calcola il checkdigit e si aspetta 13 caratteri come input, senza fare troppi controlli.

  23. Marco says:

    Ciao,
    grazie!!! Veramente utilissimo.
    Volevo chiedervi un aiuto, io devo creare per i miei prodotti i codici a barre EAN 13, mi date per favore una chiave di creazione?
    Cioè che logica posso utilizzare per la creazione da zero?

    Grazie.
    Marco

  24. Augusto says:

    Allora per creare Ean-13 bisogna farsi fornire dal Indicod il proprio range di codifica. Se ti colleghi al loro sito è inoltre possibile avere il manuale facilmente scaricabile (è praticamente una bibbia), dopo dipende dall’uso che ne vuoi fare. Per uso interno la chiave che indicod ha lasciato per libero uso inizia per 20 e 21 quindi il codice può essere 20xxxxxxxxxx(c) – (c) stà per ceck digit ma non mi sono ancora dilettato a caricarmi l’algoritmo di calcolo. Se un giorno lo faccio lo pubblico qui.

  25. Mauro says:

    Ciao Matteo.
    Scusa la mia ignoranza, avrei bisogno di capire come funzione il file exel.
    Poi darmi una piccola spiegazione.

    Grazie.

  26. Matteo says:

    @Mauro:
    C’è poco da spiegare: installi il font (su google trovi procedure per qualunque sistema operativo), salvi il file Excel, lo apri, scrivi il codice EAN-13 nella colonna “CODICE” (dove adesso c’è 1234567980123) e nella colonna BARCODE troverai il codice a barre.

    Se vuoi averne più di uno, devi copiare l’intera riga 2 e ripetere il procedimento.

  27. marco says:

    Ciao,
    per caso hai qualche dritta per stampare il codice a barre in Microsoft Word?
    Scenario:
    Ho un campo word che viene valorizzato con caratteri alfanumerici da 8-10 cifre.
    Vorrei avere un altro campo in cui la stessa stringa è convertita in barre.
    Devo mettermi a creare macro?
    Grazie per qualunque suggerimento, niubbo totale.

  28. Matteo says:

    @marco:
    Mi sa che devi creare una macro per convertire il codice nella stringa da visualizzare con il font corretto.

  29. MAURO says:

    Ciao Marco.
    Scusa ma non cambia nulla.
    Ho installato i font
    Ho scritto nella prima colonna il codice EAN13, ma nella terza colonna non varia.

    Grazie della tua disponibilità.

  30. Pino says:

    avrei bisogno di aiuto per stampare degli ean-8 e mi è sembrato di capire che Augusto ha la soluzione x excel.
    ve ne sarei davvero grato.
    Ciao

  31. Matteo says:

    @Pino:
    Trovi la soluzione di Augusto a fondo post, ma non ho trovato font EAN-8 scaricabili gratuitamente.

  32. Francesco says:

    Complimenti per l’applicazione, veramente fantastica!!!!
    Ora vorrei provare a ricrearla in visual basic – crystal report,
    quindi ti chiedo se cortesemente potresti darmi la tabella di
    trascodifica per passare da una cifra al font.
    Es. la prima cifra del codice è = alla prima cifra del font
    la seconda cifra = ?
    ………
    la tredicesima riga = ?

  33. Matteo says:

    @Francesco:
    La tabella è direttamente nel foglio Excel, insieme alle formule.

  34. Francesco says:

    Il prob. è che non sono molto pratico di excel, la formula che utilizzi non so che cosa fa e come lo fa.
    se cortesemente (vista la mia poca conoscenza) potresti spiegarmi come vengono convertite le cifre.

    grazie

  35. Matteo says:

    @Francesco:
    A questo link, oltre allo stesso font EAN-13 utilizzato nel mio post, ci sono anche tutte le spiegazioni necessarie alla codifica: http://grandzebu.net/index.php?page=/informatique/codbar-en/ean13.htm

  36. Francesco says:

    Ottimo, l’unica cosa che non capisco è perchè nella routine vb il numero delle cifre è da 12 invece che da 13

  37. Matteo says:

    La tredicesima cifra è di controllo e si calcola a partire dalle prime 12

  38. Francesco says:

    Sei un grande!!!!!
    Tutto perfetto

  39. Roberto says:

    Ciao,

    per calcolare il check digit dell’EAN-13 devi sommare le 6 cifre dispari del codice e moltiplicarne la somma per 3. Al valore ottenuto, sommi tutte e 6 le cifre pari.
    A questo punto la cifra ottenuta, dev’essere sottratta alla cifra stessa, arrotondata alla decina superiore.
    Esempio:
    Codice : 803346209006
    Somma cifre dispari moltiplicata per 3: 0+3+6+0+0+6= 15 x 3= 45
    Somma cifre pari alla somma ottenuta: 45+8+3+4+2+9+0= 71
    L’arrotondamento alla decina superiore di 71 è 80
    Quindi: 80-71 = 9

    Il check digit del codice è 9

    Ciao Roberto

  40. doctia says:

    Grandissimo guida e tool utilizzimo

  41. MARCO says:

    Ciao ho una necessità, devo inserire in un excel un range di barcode, già in mio possesso,
    per non caricarmeli uno ad uno con la pistola laser esiste un modo che mi consente, inserendo il primo o primo ed ultimo di generare i codici intermedi?
    Ciao a tutti
    Marco

  42. Tonino says:

    Ottima guida e ottimo lavoro. Cortesemente qualcuno potrebbe indicarmi le modifiche da effetturare per permettere la creazione di codici a barre ean13+5? Grazie anticipatamente.

  43. Tonino says:

    Bhé in mancanza di risposte :) ho provveduto direttamente ha modificare e aggiungere al file excel attuale l’implementazione del plugin di 5 digit: Per chi ne avesse bisogno questo è il link: http://tonyfire.altervista.org/2010/09/26/come-creare-codici-barre-barcode-ean-13-5-calc-excel/

  44. Matteo says:

    @Tonino:
    Ottimo, questo è lo spitiro giusto! Grazie per il contributo :)

  45. ROXIS says:

    grazie per il post bellissimo lavoro.
    ho un problema però se inserisco un ean 13 con doppio 0 iniziale, dopo le opportune modifiche alla cella, lo stampa bene (nel senso che vedo il doppio 0 nel codice) ma i lettori lo rilevano come singolo 0. quindi il codice 0012345678910 viene visto come 012345678910 come posso risolvere?

  46. Augusto says:

    Ciao, penso che tu ti trova davanti ad un UPC-A (Ean Americano), questi codici hanno lunghezza 12 e iniziano con zero (parecchi). Non mi risulta esistano EAN-13 inizianti per 00 ma per conferme vai al sito Indicod. Ciao

  47. ROXIS says:

    esistono giuro. sono ean 13 con 00 iniziale

  48. Ricky says:

    Ma perchè non ho trovato questo sito prima? il vostro tutorial è utilitssimo ma ho comprato da poco su questo sito http://www.ean13-code.com/indexi.html dei codici a basso prezzo per la mia azienda, e mi sono trovato bene, ma non pensavo che si potessero fare anche così, peccato! averlo saputo prima…

    • Matteo says:

      Ti ringrazio per i complimenti, ma attenzione: un conto è creare il barcode relativo ad un codice EAN (che è quello che spiego in questo articolo), altra cosa è essere assegnatari di codici EAN (si tratta di questioni burocratiche fra la tua azienda e Indicod, indipendenti dalla modalità che userai poi per rappresentare o stampare tali codici).

  49. giovanni says:

    SALVE
    ESISTE QUALCOSA DI SIMILE PER CREARE I BARCODE – 128?

    per favore aiutatemi

    grazie

  50. Ant1 says:

    ciao,
    ho scaricato il .ttf ed i file .ods per generare i codici EAN-13.
    Ma mi serviva di realizzare i codici EAN-8, ho cercato un po’ in giro e documentandomi sono riuscito a modificare le formule per generare i codici EAN-8 utilizzando lo stesso font. Almeno credo, ho verificato solo leggendo con il cellulare e l’ha letto bene. Se vuoi ti mando il foglio modificato, scrivimi un messaggio e te lo posso inviare, al momento non ho possibilità di allegare al commento.
    Ciao e grazie per le preziose indicazioni.

    Antonio

  51. navitaccia says:

    Grazie, mi diletto nella mia piccola azienda adesso sparo con la pistola e fatturo direttamente, ma ho il problema con gli ean 8. Leggendo, Ant1 è riuscito a modificare le formule per generare i codici EAN-8 utilizzando lo stesso font, si sa qualcosa?
    Ciao

    • Matteo says:

      Proprio qualche giorno fa mi ha mandato un foglio Excel per i barcode EAN-8. Questa sera aggiorno il post e lo pubblico.

  52. navitaccia says:

    Attendo con ansia,.
    Grazie ancora..

  53. Matteo says:

    Ho aggiornato il post con un esempio di barcode EAN-8 che utilizza lo stesso font dei barcode EAN-13. Ringrazio Antonio per l’ottimo lavoro!

  54. navitaccia says:

    Ho un piccolo problema, non vedo le formule, perchè io uso excel.
    Ciao e grazie

    • Matteo says:

      Ho aggiunto la versione Excel, anche se avere Openoffice installato non costa niente e spesso salva da molti problemi.

  55. Ant1 says:

    ciao, come avevo accennato nel post nel mio blog, avevo l’esigenza di realizzare i codici EAN-8 da un programma in Visual C++ e la soluzione più veloce che ho trovato è stata quella di realizzare una pagina HTML che tramite un foglio di stile CSS possa disegnare i codici a barre EAN-8 o EAN-13 con il font TrueType, la logica di generazione delle stringhe, derivata dalle formule del tuo foglio di calcolo, risiede nel programma che genera l’HTML. Ti ringrazio di nuovo per le indicazioni che ho trovato in questo articolo.
    Riporto il link al mio articolo se può interessare: http://ant1-antuan.blogspot.com/2011/06/codici-barre-ean-13-e-ean-8-con-html.html

  56. navitaccia says:

    Ho risoto anche se in parte, devo inerire col copia incolla dove ho gli EAN-8 ma non è un problema, una volta salvati tutti gli articoli. Volevo ringraziare per la tempestività e gentilezza…rara oggi giorno.
    Ciao e grazie

  57. Emilio says:

    Ciao scusate se disturbo ma trattate un argomento che mi piacerebbe approfondire:
    premetto che di database e affini non ci capisco una cippa però vorrei inserire in un elenco di codici a barre da me precedentemente creato in un foglio di calcolo di open office una macro o un istruzione qualsiasi per cui inserito il codice EAN mi andasse ad evidenziare la riga corrispondente.
    ps onore a voi tutti vi stimo
    emilio

  58. Emilio says:

    Ciao per ovviare il mio problema (che proprio non riesco a risolvere) utilizzo la funzione “trova” nel mio foglio elettronico (…la funzione trova è quella con il binocolo).
    recentemente però ho ideato un sistema simpatico per avere tutti i miei dati immediatamente sotto mano : creato un foglio di lavoro con tutti i miei dati (io uso open office) lo salvo in formato .xls, lo carico sul mio smartphone e utilizzo un “app” (gratuita) per leggere i codici a barre e sempre con la funzione “trova” mi evidenza quello che mi interessa.
    veloce, pratico e, molto importante, gratuito!!!
    ciao a tutti

  59. Bella guida.. Non trovo piu’ il fonts .. non riesco a scaricarlo.. Riesci ad inviarmelo? Grazie