【问题标题】:CSV upload (convert to spreadsheet) to google drive in iOS?CSV 上传(转换为电子表格)到 iOS 中的谷歌驱动器?
【发布时间】:2014-04-10 10:30:47
【问题描述】:

我已生成 csv 文件以存储在本地目录路径中。我试图将 csv 文件上传到谷歌驱动器,它工作正常。从谷歌驱动器打开一个 csv 文件,而不是在电子表格中显示预览。所以我想将 csv 文件(将 csv 转换为电子表格)上传到谷歌驱动器。 如何转换?

提前致谢

来自谷歌驱动器的图像

上传 csv 文件到驱动器供您参考的示例:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *root = [documentsDir stringByAppendingPathComponent:@"Report.csv"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:root];
if(fileExists == YES)
{
        GTLUploadParameters *uploadParameters = nil;
        self.driveFile = [[GTLDriveFile alloc]init];

        NSData *dat = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:root]];
        uploadParameters =
        [GTLUploadParameters uploadParametersWithData:dat MIMEType:@"text/csv"];

        self.driveFile.title = @"Report.csv";
        GTLQueryDrive *query = nil;
        if (self.driveFile.identifier == nil || self.driveFile.identifier.length == 0)
        {
            query = [GTLQueryDrive queryForFilesInsertWithObject:self.driveFile
                                                uploadParameters:uploadParameters];
        }
        else
        {
            query = [GTLQueryDrive queryForFilesUpdateWithObject:self.driveFile
                                                          fileId:self.driveFile.identifier
                                                uploadParameters:uploadParameters];
        }
        UIAlertView *alert = [DrEditUtilities showLoadingMessageWithTitle:@"While data is uploading..."
                                                                 delegate:self];

        [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                                  GTLDriveFile *updatedFile,
                                                                  NSError *error)
         {
            appDel.File_Id = updatedFile.identifier;
            [alert dismissWithClickedButtonIndex:0 animated:YES];
            if (error == nil)
            {
                self.driveFile = updatedFile;

                UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Feel Fix" message:@"Successfully Uploaded" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
                [alert show];
            }
            else
            {
                NSLog(@"An error occurred: %@", error);
                [DrEditUtilities showErrorMessageWithTitle:@"Unable to save file"
                                                   message:[error description]
                                                  delegate:self];
            }
        }];

【问题讨论】:

    标签: ios csv google-drive-api google-sheets converter


    【解决方案1】:

    插入 Convert 属性来解决这个问题

        GTLUploadParameters *uploadParameters = nil;
        self.driveFile = [[GTLDriveFile alloc]init];
    
        NSData *dat = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:root]];
        uploadParameters =
        [GTLUploadParameters uploadParametersWithData:dat MIMEType:@"text/csv"];
    
        self.driveFile.title = @"Report.csv";
        GTLQueryDrive *query = nil;
        if (self.driveFile.identifier == nil || self.driveFile.identifier.length == 0)
        {
            query = [GTLQueryDrive queryForFilesInsertWithObject:self.driveFile
                                                uploadParameters:uploadParameters];
    
            query.convert = YES;   // Convert file format to spread sheet
    
        }
        else
        {
            query = [GTLQueryDrive queryForFilesUpdateWithObject:self.driveFile
                                                          fileId:self.driveFile.identifier
                                                uploadParameters:uploadParameters];
        }
        UIAlertView *alert = [DrEditUtilities showLoadingMessageWithTitle:@"While data is uploading..."
                                                                 delegate:self];
    
        [self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                                  GTLDriveFile *updatedFile,
                                                                  NSError *error)
         {
            appDel.File_Id = updatedFile.identifier;
            [alert dismissWithClickedButtonIndex:0 animated:YES];
            if (error == nil)
            {
                self.driveFile = updatedFile;
    
                UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Feel Fix" message:@"Successfully Uploaded" delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
                [alert show];
            }
            else
            {
                NSLog(@"An error occurred: %@", error);
                [DrEditUtilities showErrorMessageWithTitle:@"Unable to save file"
                                                   message:[error description]
                                                  delegate:self];
            }
        }];
    

    【讨论】:

    • Swift 版本没有 convert 属性。所以我尝试了 query.q = "convert=YES" 和 "convert=true"。他们都没有工作。仍保存为 .csv。我想将其保存为 google 电子表格或 excel。
    • 对于 v3 API convert 不再有效。而是将上传的 MIME 类型指定为 text/csv,并将所需文件的 MIME 类型指定为 application/vnd.google-apps.spreadsheet
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多