Estou trabalhando em um processo que coleta dados de clientes e os analisa em nossos produtos. Nesse caso, um arquivo xlsx. Infelizmente, nosso produto está com problemas para lê-lo porque foi codificado para ler arquivos xlsx criados no Excel para Mac em vez do Excel para Windows, e nossos clientes estão usando o Windows.
Ainda estou investigando isso, mas, até onde posso dizer, as diferenças envolvem os tipos MIME e a organização dos dados XML arquivados no arquivo xlsx:
Aqui está uma captura de tela de dois arquivos com dados idênticos, um salvo localmente em um Mac e outro em uma máquina Windows.
Veja os resultados de um comando file
:
user@MBP:~/Desktop/win_vs_mac$ file *
mac_origin.xlsx: Microsoft Excel 2007+
win_origin.xlsx: Zip archive data, at least v2.0 to extract
user@MBP:~/Desktop/win_vs_mac$ file -I *
mac_origin.xlsx: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=binary
win_origin.xlsx: application/zip; charset=binary
E aqui está o que eles oferecem quando você desarquivá-los (esses resultados são consistentes em várias tentativas):
user@MBP:~/Desktop/win_vs_mac$ unzip mac_origin.xlsx
Archive: mac_origin.xlsx
inflating: [Content_Types].xml
inflating: _rels/.rels
inflating: xl/_rels/workbook.xml.rels
inflating: xl/workbook.xml
inflating: xl/sharedStrings.xml
inflating: xl/theme/theme1.xml
inflating: xl/styles.xml
inflating: xl/worksheets/sheet1.xml
inflating: docProps/core.xml
inflating: docProps/app.xml
user@MBP:~/Desktop/win_vs_mac$ unzip win_origin.xlsx
Archive: win_origin.xlsx
warning: win_origin.xlsx appears to use backslashes as path separators
inflating: _rels/.rels
inflating: [Content_Types].xml
inflating: xl/workbook.xml
inflating: xl/sharedStrings.xml
inflating: xl/styles.xml
inflating: xl/worksheets/sheet0.xml
inflating: xl/_rels/workbook.xml.rels
Depois de fazer muitas pesquisas, este tópico me leva a acreditar que a ordem em que os arquivos foram adicionados pode fazer a diferença também.
A minha pergunta é, existe uma maneira de converter programaticamente um arquivo do Excel "baseado em Win" em um arquivo do Excel "baseado em Mac" sem manualmente abrir o arquivo e salvá-lo novamente? Idealmente no terminal? Não consigo encontrar nenhuma ferramenta existente. Como um tipo sysadmin / ops de intermediário, não estou em posição de pedir ao cliente para gerá-los no macOS e não estou em posição de pedir ao Dev para reconstruir a parte do produto que os lê. Eu preciso para automatizar isso ou isso me enlouquecerá.
Obrigado por qualquer ajuda que você possa dar.