Pregunta

Tengo una hoja de cálculo de Excel bastante sencillo, y necesito usar los datos en una aplicación para el iPhone. El documento xls tiene 6 columnas y 200 filas>.

Me gustaría crear un plist del documento xls. ¿Cómo puedo convertir una a la otra, mediante programación?

¿Fue útil?

Solución

llego tarde a la fiesta, pero levanté una utilidad de escritorio que va a convertir CSV a un plist. Puede descargar el binario o utilizar este código, lo que requiere cCSVParse . Utiliza lo que está en la fila 0 para crear nombres clave, a continuación, genera diccionarios para cada fila sucesiva.

    CSVParser *parser = [CSVParser new];
[parser openFileWithPath:pathAsString];
NSMutableArray *csvContent = [parser parseFile];
[parser closeFile];

if (pathAsString != nil)
{

    NSArray *keyArray = [csvContent objectAtIndex:0];

    NSMutableArray *plistOutputArray = [NSMutableArray array];

    NSInteger i = 0;

    for (NSArray *array in csvContent)
    {



        NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

        NSInteger keyNumber = 0;

        for (NSString *string in array)
        {

            [dictionary setObject:string forKey:[keyArray objectAtIndex:keyNumber]];

            keyNumber++;

        }

        if (i > 0)
        {
            [plistOutputArray addObject:dictionary];
        }

        i++;

    }

    NSMutableString *mutableString = [NSMutableString stringWithString:pathAsString];
    [mutableString replaceOccurrencesOfString:@".csv" withString:@".plist" options:nil range:NSMakeRange([mutableString length]-4, 4)];

    NSURL *url = [NSURL fileURLWithPath:mutableString];


    [plistOutputArray writeToURL:url atomically:YES];

Otros consejos

Usted puede hacer esto mediante una fórmula sencilla de copiar y pegar en una columna al lado de cada uno de sus más de 200 filas.

Por ejemplo, suponiendo Colum A contiene una lista de nombres, y la columna B contiene un set de edades que podría utilizar una fórmula como la siguiente para terminar con la mayor parte del XML para un diccionario basado en plist.

=CONCATENATE("<key>Name</key><string>", A1,"</string><key>Age</key><integer>",B1,"</integer>")

A continuación, seleccione todas las celdas dentro de esta nueva columna se puede copiar y pegar en el Bloc de notas u otro editor de texto para guardarlo como un archivo plist (es posible que desee poner algún texto codificado en una célula arriba y por debajo de los más de 200 filas , con el fin de obtener las variables necesarias, etc, así ...

Damas y caballeros,

He intentado otras soluciones recomendadas anteriormente, pero debido a los caracteres Unicode en mi idioma (turco) ninguno de ellos funcionó para mí ... todos los caracteres Unicode estaban rotas. Entonces decidí hacer una herramienta para esto.

Me presento con orgullo la forma más sencilla para convertir cualquier XLS o XLSX o archivo CVS a un plist:

http://exceltoplist.herokuapp.com/

Simplemente cargue su XLS, XLSX o CSV y descarga su Apple Plist!

Disfrute!

Nota: Debido a la política de libre banco de pruebas de Heroku que podría tomar unos momentos para navegar a la página. Sólo seguir esperando durante 5-10 segundos para abrir la página.

Para OpenOffice, utilizar esta fórmula

=CONCATENATE("<key>number</key><integer>"; A2;"</integer><key>MyString</key><string>";B2;"</string>")

He encontrado el concatenar a funcionar mejor para esto.

Para mi propósito sólo necesito para convertir CSV con dos columnas a archivo plist. La primera columna es llaves y segundo son valores. Por lo tanto, cambiar ligeramente Danilo Campos código de la siguiente manera:

CSVParser *parser = [CSVParser new];
[parser openFileWithPath:pathAsString];
NSMutableArray *csvContent = [parser parseFile];
[parser closeFile];

if (pathAsString != nil)
{
    NSMutableDictionary *plistOutputArray = [NSMutableDictionary dictionary];

    for (NSArray *array in csvContent)
    {
        NSString *key = (NSString *)([array objectAtIndex:0]);
        NSString *value = (NSString *)([array objectAtIndex:1]);

        [plistOutputArray setObject:value forKey:key];
    }

    NSMutableString *mutableString = [NSMutableString stringWithString:pathAsString];
    [mutableString replaceOccurrencesOfString:@".csv" withString:@".plist" options:nil range:NSMakeRange([mutableString length]-4, 4)];

    NSURL *url = [NSURL fileURLWithPath:mutableString];

    [plistOutputArray writeToURL:url atomically:YES];
}

P.S. Puede encontrar su código fuente inicial aquí - http://code.google.com/p/ danilobits / fuente / checkout Tenga en cuenta que para obtener su código de trabajo ahora tiene que cambiar "SDK Base" a "Últimas OS X"

http://shancarter.github.io/mr-data-converter/ para convertir xls a un Json (sólo tienes que copiar y pegar) (puede volver a darle formato a eliminar por espacios en blanco en http: // jsonviewer.stack.hu/ ). guardar JSON a archivo de texto denominado: in.json .

Utilice el comando plutil a formato JSON para plist

plutil -convert xml1 in.json -o out.plist
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top