Redmond, abbiamo un problema…

Create un nuovo foglio elettronico con Microsoft Office 2013. Per farlo, ho utilizzato la versione italiana su uno dei primissimi ASUS ZenBook, con sistema operativo Windows 7 (e tutti gli aggiornamenti del caso), 4GB di RAM e un SSD da 128GB.

Create Spreadsheet

Posizionate il cursore sulla prima cella (A1), e inserite la data 1° febbraio 1900 (usando solo numeri, nel vostro formato preferito: io ho usato 01/01/1900).

Place Cursor on First Cell

Trascinate in basso fino alla riga 30 (A30) per riempire automaticamente tutte le celle con le date. Dovreste vedere il 29 febbraio 1900, il giorno che non è mai esistito (ma è stato introdotto nei fogli elettronici da Visicalc e poi mantenuto da Lotus e Microsoft). Dopo il 29 febbraio 1900, ci sono il 1° marzo 1900, il 2 marzo 1900, … eccetera.

Insert February 1900 Dates

Salvate il file usando la funzione “Salva col nome…”, dato che volete usare il formato OOXML Strict (mentre il default è OOXML 2013 Transitional).

Save As...

Fate attenzione a scegliere “Spreadsheet Open XML Strict”. La voce è la penultima della lista (il che è abbastanza strano, visto che dovrebbe essere la prima per la sua natura di unico standard autentico). Chiudete il documento, e chiudete Microsoft Excel.

Choose Open XML Strict

Verificate il successo dell’operazione. Io ho chiamato il documento test.xlsx. Sfortunatamente, non è possibile distinguere il formato Open XML Strict da quello Open XML Transitional dall’icona o dall’estensione.

Check the success of the save as operation

Lanciate Microsoft Excel, e aprite il foglio elettronico text.xlsx. Potete verificare immediatamente che il 29 febbraio 1900 è finalmente sparito (la data non è mai esistita, per cui avrebbe dovuto essere sempre così).

La scelta di Microsoft, in questo caso, è stata quella di spostare tutte le celle verso il basso per sostituire il 29 febbraio 1900 che adesso manca. A causa di questa scelta, nella prima cella (A1) adesso c’è il 31 gennaio 1900 (che non è mai stato inserito nel documento).

Open the just saved spreadsheet

A questo punto, vorrete sapere cosa viene dopo il 1° marzo 1900… e quindi trascinerete la “maniglia” verso il basso per riempire le celle fino alla riga 55. Con somma sorpresa, scoprirete che dopo il 1° marzo 1900 c’è il … 31 gennaio 1900, seguito da tutto il mese di febbraio (lo stesso che c’è prima del 1° marzo 1900). Strano, e in un certo senso anche imbarazzante.

Drag down to line 55

Naturalmente, cominciate ad avere qualche sospetto sul formato… Per cui trascinate la solita “maniglia” fino alla riga 80, con gli stessi imbarazzanti risultati.

Drag down to line 80

Bene, adesso abbiamo la certezza che Excel ha dei problemi significativi nella gestione dei fogli elettronici Open XML Strict. Quindi, verificate che non ci siano cambiamenti sostanziali trascinando le celle fino alla riga 300.000 (si, trecentomila).

Drag down to line 300,000

Redmond, abbiamo un problema… Facciamo un elenco delle ultime dieci date: 27 febbraio, 28 febbraio, 14 febbraio, 2 marzo, 3 marzo, 4 marzo, 5 marzo, 14 febbraio, 15 febbraio, e naturalmente 16 febbraio… Redmond, abbiamo sicuramente un problema…

Anzi, no. Redmond, avete sicuramente un problema.

Comments
  1. italovignoli

    Ovviamente, quelli pagati da Microsoft per commentare quello che scrivo non rientrano tra gli utenti.

  2. italovignoli

    I bug di LibreOffice sono pubblici, e nessuno ha mai affermato che il software ne sia immune, per cui la domanda – e l’ironia insita nella domanda stessa – è del tutto inutile.
    Il baco dell’anno bisestile è presente dalla prima versione di Excel, e in precedenza dalla prima versione di Lotus 1-2-3, e in precedenza dalla prima versione di Visicalc. Ovvero, dal 1979. Un lasso di tempo sufficiente per risolvere il bug.
    Qui il problema è un po’ diverso, e non ha nulla a che vedere con il marketing. Qui stiamo parlando di standard che non sono standard e non lo diventeranno mai. Ovviamente, a svantaggio degli utenti.
    Purtroppo, questo, e gli altri commenti di coloro che difendono Microsoft significano solo una cosa, che è davvero preoccupante: gli utenti sono talmente “male educati” da non comprendere la gravità del problema. Ovvero, lo standard – che dovrebbe garantire il loro diritto all’interoperabilità – non è uno standard.
    Quindi, gli utenti sono contenti perché un’azienda sta calpestando i loro diritti, che loro – tra l’altro – pagano profumatamente, visto che la licenza di Microsoft Office costa uno sproposito. Chapeau, a Microsoft e agli utenti, anche se per motivi completamente diversi.

  3. “Chi non ha peccato scagli la prima pietra….”
    Tutti, tutti, tutti i software hanno bachi e problemi che nel tempo vengono identificati e scoperti.
    Forse Libre Calc è assolutamente perfetto? Oppure presenta anche esso qualche bachetto?
    (http://listarchives.libreoffice.org/global/users/)
    Listare i bachi della concorrenza non mi sembra proprio una tecnica di marketing brillante!

  4. Ok, vuol dire che sono fortunato.

  5. italovignoli

    Devi partire dal 1° febbraio 1900, trascinare fino al 1° marzo (e avrai il 29 febbraio), salvare il Open XML Strict, chiudere Office, riaprire Office, caricare il file in formato Open XML Strict (non avrai più il 29 febbraio), e trascinare da quel 1° marzo. Il problema è legato al formato del file, non a Excel, che – a parte il 29 febbraio 1900 – non ha altri problemi con le date se si utilizza il formato Open XML Transitional (che però non è standard). Quando il formato del file diventa standard, e quindi elimina il 29 febbraio, sembra proprio che Excel vada in palla. Il problema è stato riprodotto più volte, su più macchine diverse da persone diverse.

  6. Scusa Italo ma non riesco a riprodurre l’errore. Seguendo la tua descrizione passo passo, quando prendo il 1 marzo 1900 e lo trascino in basso, mi continua correttamente la sequenza di date. Uso Excel 2013 Italiano (15.0.4551.1510) a 32bit sotto Windows 7.

  7. Segnalo anche questo articolo sul Blog siamogeek.com che parla di un BUG nel parsing delle date nel Framework .NET

    http://siamogeek.com/2014/03/il-bug-che-non-ti-aspetti/

    I due BUG sono *probabilmente correlati* perché hanno a che fare con il mese di Marzo.

    (sto inserendo un link a questo post nei commenti dell’altro Blog)

  8. italovignoli

    In questo caso parliamo di date, e non parliamo di nessun intervallo di celle. Si seleziona una sola cella con la data, e si trascina la maniglia verso il basso per far completare la serie di date. Excel si comporta normalmente se il file viene salvato nel formato OOXML Transitional, e impazzisce se viene salvato nel formato OOXML Strict. Quindi, è un comportamento del tutto anormale, e un bug gravissimo che rende il formato OOXML Strict inutilizzabile.

  9. Sergio

    Ciao Italo,
    lungi da me difendere Microsoft ed i suoi prodotti, ma questo è un tipico comportamento di excel.
    Se tu provi ad inserire in tre celle un intervallo, diciamo, 1, 2, 3, selezioni l’intervallo e trascini la maniglia, 1, 2, 3 verrà ripetuto per n volte<, ciò che succedere con l'intervallo dal 31/12 – 31/03.
    La ripetizione dipende dall'intervallo che selezioni.

  10. Osvaldo Gervasi

    Bravo! E’ grave il fatto tecnico … ma la demo è esilarante!!

ADD YOUR COMMENT