如何从.csv文件创建google-drive电子表格?

时间:2012-09-12 13:15:26

标签: c# .net google-drive-api

我想从.csv文件创建电子表格。 代码:

static void Main()
        {
            String CLIENT_ID = "<MY ID>";
            String CLIENT_SECRET = "<MY SECRET>";

            var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET);
            var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
            var service = new DriveService(auth);

            File body = new File();
            body.Title = "My spread";
            body.Description = "A test spread";
            body.MimeType = "application/vnd.google-apps.spreadsheet";

            byte[] byteArray = System.IO.File.ReadAllBytes("spread.csv");
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            service.Files.Insert(body, stream, "application/vnd.google-apps.spreadsheet").Upload();
        }

        private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
        {
            string[] scopes = new string[] { "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/userinfo.profile" };
            IAuthorizationState state = new AuthorizationState(scopes);
            state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
            Uri authUri = arg.RequestUserAuthorization(state);

            // Request authorization from the user (by opening a browser window):
            Process.Start(authUri.ToString());
            Console.Write("  Authorization Code: ");
            string authCode = Console.ReadLine();
            Console.WriteLine();

            // Retrieve the access token by using the authorization code:
            return arg.ProcessUserAuthorization(authCode, state);
        }

在google-drive页面上插入文件并点击它(以所有者身份登录)后,我收到消息

“我们很抱歉。 找不到此网址的电子表格。确保您拥有正确的网址,并且电子表格的所有者尚未将其删除“

当我将MimeType更改为“text / csv”并插入文件时,点击它后,我收到消息  “无法预览 此项目是使用Google Drive应用程序(MyApp'sName)创建的。 下载此文件或使用您已安装的某个应用程序打开它。“

我也可以右键单击此文件(使用“text / csv”MimeType创建的文件)并选择选项“导出到Google文档”这会给我一些我想要的结果到达 - 我的.csv文件内容的电子表格文件。但这种间接方法并不能完全满足我的需要。有没有方法可以在谷歌驱动器上制作电子表格文件,直接从我的应用程序中提供.csv文件的内容?

2 个答案:

答案 0 :(得分:1)

我不知道c#,但在它的基础上它反映了Java,在行

  

service.Files.Insert(body,stream,   “应用程序/ vnd.google-apps.spreadsheet”)上传();

您需要插入等效的

  

.setConvert(真)

也...

mimetype应为“text / csv”

答案 1 :(得分:1)

我找到了答案:)

如何以编程方式将文件转换为适当的Google文档格式:

var service = new DriveService(new BaseClientService.Initializer
{
    ...
});

...

FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, _mimeType);
request.Convert = true;
request.Upload();