-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #120 from SyncfusionExamples/900232-Google-Drive
900232 - Add loading and saving samples for Google Drive
- Loading branch information
Showing
153 changed files
with
149,917 additions
and
0 deletions.
There are no files selected for viewing
25 changes: 25 additions & 0 deletions
25
Loading and Saving/Google Drive/Loading/Create Excel/Create Excel.sln
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
|
||
Microsoft Visual Studio Solution File, Format Version 12.00 | ||
# Visual Studio Version 17 | ||
VisualStudioVersion = 17.9.34310.174 | ||
MinimumVisualStudioVersion = 10.0.40219.1 | ||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Create Excel", "Create Excel\Create Excel.csproj", "{E020BF7F-612D-429D-AF38-B51B4B902A27}" | ||
EndProject | ||
Global | ||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||
Debug|Any CPU = Debug|Any CPU | ||
Release|Any CPU = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||
{E020BF7F-612D-429D-AF38-B51B4B902A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||
{E020BF7F-612D-429D-AF38-B51B4B902A27}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||
{E020BF7F-612D-429D-AF38-B51B4B902A27}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||
{E020BF7F-612D-429D-AF38-B51B4B902A27}.Release|Any CPU.Build.0 = Release|Any CPU | ||
EndGlobalSection | ||
GlobalSection(SolutionProperties) = preSolution | ||
HideSolutionNode = FALSE | ||
EndGlobalSection | ||
GlobalSection(ExtensibilityGlobals) = postSolution | ||
SolutionGuid = {B9A3DACC-3E68-4CBE-8B6A-EB86CCE84358} | ||
EndGlobalSection | ||
EndGlobal |
Binary file added
BIN
+205 KB
... Saving/Google Drive/Loading/Create Excel/Create Excel/AdventureCycles-Logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
268 changes: 268 additions & 0 deletions
268
...g and Saving/Google Drive/Loading/Create Excel/Create Excel/Controllers/HomeController.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,268 @@ | ||
using Create_Excel.Models; | ||
using Microsoft.AspNetCore.Mvc; | ||
using System.Diagnostics; | ||
using Syncfusion.XlsIO; | ||
using Syncfusion.Drawing; | ||
using Google.Apis.Auth.OAuth2; | ||
using Google.Apis.Drive.v3; | ||
using Google.Apis.Services; | ||
using Google.Apis.Upload; | ||
using Google.Apis.Drive.v3.Data; | ||
using System.Security.Principal; | ||
|
||
|
||
namespace Create_Excel.Controllers | ||
{ | ||
public class HomeController : Controller | ||
{ | ||
private readonly ILogger<HomeController> _logger; | ||
|
||
public HomeController(ILogger<HomeController> logger) | ||
{ | ||
_logger = logger; | ||
} | ||
|
||
public IActionResult Index() | ||
{ | ||
return View(); | ||
} | ||
public async Task<IActionResult> CreateDocument() | ||
{ | ||
//Create an instance of ExcelEngine | ||
using (ExcelEngine excelEngine = new ExcelEngine()) | ||
{ | ||
IApplication application = excelEngine.Excel; | ||
application.DefaultVersion = ExcelVersion.Xlsx; | ||
|
||
//Create a workbook | ||
IWorkbook workbook = application.Workbooks.Create(1); | ||
IWorksheet worksheet = workbook.Worksheets[0]; | ||
|
||
//Adding a picture | ||
FileStream imageStream = new FileStream("AdventureCycles-Logo.png", FileMode.Open, FileAccess.Read); | ||
IPictureShape shape = worksheet.Pictures.AddPicture(1, 1, imageStream, 20, 20); | ||
|
||
//Disable gridlines in the worksheet | ||
worksheet.IsGridLinesVisible = false; | ||
|
||
//Enter values to the cells from A3 to A5 | ||
worksheet.Range["A3"].Text = "46036 Michigan Ave"; | ||
worksheet.Range["A4"].Text = "Canton, USA"; | ||
worksheet.Range["A5"].Text = "Phone: +1 231-231-2310"; | ||
|
||
//Make the text bold | ||
worksheet.Range["A3:A5"].CellStyle.Font.Bold = true; | ||
|
||
//Merge cells | ||
worksheet.Range["D1:E1"].Merge(); | ||
|
||
//Enter text to the cell D1 and apply formatting. | ||
worksheet.Range["D1"].Text = "INVOICE"; | ||
worksheet.Range["D1"].CellStyle.Font.Bold = true; | ||
worksheet.Range["D1"].CellStyle.Font.RGBColor = Color.FromArgb(42, 118, 189); | ||
worksheet.Range["D1"].CellStyle.Font.Size = 35; | ||
|
||
//Apply alignment in the cell D1 | ||
worksheet.Range["D1"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignRight; | ||
worksheet.Range["D1"].CellStyle.VerticalAlignment = ExcelVAlign.VAlignTop; | ||
|
||
//Enter values to the cells from D5 to E8 | ||
worksheet.Range["D5"].Text = "INVOICE#"; | ||
worksheet.Range["E5"].Text = "DATE"; | ||
worksheet.Range["D6"].Number = 1028; | ||
worksheet.Range["E6"].Value = "12/31/2018"; | ||
worksheet.Range["D7"].Text = "CUSTOMER ID"; | ||
worksheet.Range["E7"].Text = "TERMS"; | ||
worksheet.Range["D8"].Number = 564; | ||
worksheet.Range["E8"].Text = "Due Upon Receipt"; | ||
|
||
//Apply RGB backcolor to the cells from D5 to E8 | ||
worksheet.Range["D5:E5"].CellStyle.Color = Color.FromArgb(42, 118, 189); | ||
worksheet.Range["D7:E7"].CellStyle.Color = Color.FromArgb(42, 118, 189); | ||
|
||
//Apply known colors to the text in cells D5 to E8 | ||
worksheet.Range["D5:E5"].CellStyle.Font.Color = ExcelKnownColors.White; | ||
worksheet.Range["D7:E7"].CellStyle.Font.Color = ExcelKnownColors.White; | ||
|
||
//Make the text as bold from D5 to E8 | ||
worksheet.Range["D5:E8"].CellStyle.Font.Bold = true; | ||
|
||
//Apply alignment to the cells from D5 to E8 | ||
worksheet.Range["D5:E8"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignCenter; | ||
worksheet.Range["D5:E5"].CellStyle.VerticalAlignment = ExcelVAlign.VAlignCenter; | ||
worksheet.Range["D7:E7"].CellStyle.VerticalAlignment = ExcelVAlign.VAlignCenter; | ||
worksheet.Range["D6:E6"].CellStyle.VerticalAlignment = ExcelVAlign.VAlignTop; | ||
|
||
//Enter value and applying formatting in the cell A7 | ||
worksheet.Range["A7"].Text = " BILL TO"; | ||
worksheet.Range["A7"].CellStyle.Color = Color.FromArgb(42, 118, 189); | ||
worksheet.Range["A7"].CellStyle.Font.Bold = true; | ||
worksheet.Range["A7"].CellStyle.Font.Color = ExcelKnownColors.White; | ||
|
||
//Apply alignment | ||
worksheet.Range["A7"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignLeft; | ||
worksheet.Range["A7"].CellStyle.VerticalAlignment = ExcelVAlign.VAlignCenter; | ||
|
||
//Enter values in the cells A8 to A12 | ||
worksheet.Range["A8"].Text = "Steyn"; | ||
worksheet.Range["A9"].Text = "Great Lakes Food Market"; | ||
worksheet.Range["A10"].Text = "20 Whitehall Rd"; | ||
worksheet.Range["A11"].Text = "North Muskegon,USA"; | ||
worksheet.Range["A12"].Text = "+1 231-654-0000"; | ||
|
||
//Create a Hyperlink for e-mail in the cell A13 | ||
IHyperLink hyperlink = worksheet.HyperLinks.Add(worksheet.Range["A13"]); | ||
hyperlink.Type = ExcelHyperLinkType.Url; | ||
hyperlink.Address = "[email protected]"; | ||
hyperlink.ScreenTip = "Send Mail"; | ||
|
||
//Merge column A and B from row 15 to 22 | ||
worksheet.Range["A15:B15"].Merge(); | ||
worksheet.Range["A16:B16"].Merge(); | ||
worksheet.Range["A17:B17"].Merge(); | ||
worksheet.Range["A18:B18"].Merge(); | ||
worksheet.Range["A19:B19"].Merge(); | ||
worksheet.Range["A20:B20"].Merge(); | ||
worksheet.Range["A21:B21"].Merge(); | ||
worksheet.Range["A22:B22"].Merge(); | ||
|
||
//Enter details of products and prices | ||
worksheet.Range["A15"].Text = " DESCRIPTION"; | ||
worksheet.Range["C15"].Text = "QTY"; | ||
worksheet.Range["D15"].Text = "UNIT PRICE"; | ||
worksheet.Range["E15"].Text = "AMOUNT"; | ||
worksheet.Range["A16"].Text = "Cabrales Cheese"; | ||
worksheet.Range["A17"].Text = "Chocos"; | ||
worksheet.Range["A18"].Text = "Pasta"; | ||
worksheet.Range["A19"].Text = "Cereals"; | ||
worksheet.Range["A20"].Text = "Ice Cream"; | ||
worksheet.Range["C16"].Number = 3; | ||
worksheet.Range["C17"].Number = 2; | ||
worksheet.Range["C18"].Number = 1; | ||
worksheet.Range["C19"].Number = 4; | ||
worksheet.Range["C20"].Number = 3; | ||
worksheet.Range["D16"].Number = 21; | ||
worksheet.Range["D17"].Number = 54; | ||
worksheet.Range["D18"].Number = 10; | ||
worksheet.Range["D19"].Number = 20; | ||
worksheet.Range["D20"].Number = 30; | ||
worksheet.Range["D23"].Text = "Total"; | ||
|
||
//Apply number format | ||
worksheet.Range["D16:E22"].NumberFormat = "$.00"; | ||
worksheet.Range["E23"].NumberFormat = "$.00"; | ||
|
||
//Apply incremental formula for column Amount by multiplying Qty and UnitPrice | ||
application.EnableIncrementalFormula = true; | ||
worksheet.Range["E16:E20"].Formula = "=C16*D16"; | ||
|
||
//Formula for Sum the total | ||
worksheet.Range["E23"].Formula = "=SUM(E16:E22)"; | ||
|
||
//Apply borders | ||
worksheet.Range["A16:E22"].CellStyle.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; | ||
worksheet.Range["A16:E22"].CellStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin; | ||
worksheet.Range["A16:E22"].CellStyle.Borders[ExcelBordersIndex.EdgeTop].Color = ExcelKnownColors.Grey_25_percent; | ||
worksheet.Range["A16:E22"].CellStyle.Borders[ExcelBordersIndex.EdgeBottom].Color = ExcelKnownColors.Grey_25_percent; | ||
worksheet.Range["A23:E23"].CellStyle.Borders[ExcelBordersIndex.EdgeTop].LineStyle = ExcelLineStyle.Thin; | ||
worksheet.Range["A23:E23"].CellStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin; | ||
worksheet.Range["A23:E23"].CellStyle.Borders[ExcelBordersIndex.EdgeTop].Color = ExcelKnownColors.Black; | ||
worksheet.Range["A23:E23"].CellStyle.Borders[ExcelBordersIndex.EdgeBottom].Color = ExcelKnownColors.Black; | ||
|
||
//Apply font setting for cells with product details | ||
worksheet.Range["A3:E23"].CellStyle.Font.FontName = "Arial"; | ||
worksheet.Range["A3:E23"].CellStyle.Font.Size = 10; | ||
worksheet.Range["A15:E15"].CellStyle.Font.Color = ExcelKnownColors.White; | ||
worksheet.Range["A15:E15"].CellStyle.Font.Bold = true; | ||
worksheet.Range["D23:E23"].CellStyle.Font.Bold = true; | ||
|
||
//Apply cell color | ||
worksheet.Range["A15:E15"].CellStyle.Color = Color.FromArgb(42, 118, 189); | ||
|
||
//Apply alignment to cells with product details | ||
worksheet.Range["A15"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignLeft; | ||
worksheet.Range["C15:C22"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignCenter; | ||
worksheet.Range["D15:E15"].CellStyle.HorizontalAlignment = ExcelHAlign.HAlignCenter; | ||
|
||
//Apply row height and column width to look good | ||
worksheet.Range["A1"].ColumnWidth = 36; | ||
worksheet.Range["B1"].ColumnWidth = 11; | ||
worksheet.Range["C1"].ColumnWidth = 8; | ||
worksheet.Range["D1:E1"].ColumnWidth = 18; | ||
worksheet.Range["A1"].RowHeight = 47; | ||
worksheet.Range["A2"].RowHeight = 15; | ||
worksheet.Range["A3:A4"].RowHeight = 15; | ||
worksheet.Range["A5"].RowHeight = 18; | ||
worksheet.Range["A6"].RowHeight = 29; | ||
worksheet.Range["A7"].RowHeight = 18; | ||
worksheet.Range["A8"].RowHeight = 15; | ||
worksheet.Range["A9:A14"].RowHeight = 15; | ||
worksheet.Range["A15:A23"].RowHeight = 18; | ||
|
||
//Saving the Excel to the MemoryStream | ||
MemoryStream stream = new MemoryStream(); | ||
workbook.SaveAs(stream); | ||
|
||
//Set the position as '0'. | ||
stream.Position = 0; | ||
|
||
//Upload the document to Google Drive | ||
await UploadDocumentToGoogleDrive(stream); | ||
|
||
return Ok("Excel document uploaded to Google Drive Cloud Storage."); | ||
} | ||
} | ||
/// <summary> | ||
/// Upload file to Google Drive | ||
/// </summary> | ||
public async Task UploadDocumentToGoogleDrive(MemoryStream stream) | ||
{ | ||
//Define the path to the service account key file | ||
string serviceAccountKeyPath = "Your_service_account_key_path"; | ||
|
||
//Specify the DirectoryID of the folder to upload the file | ||
string directoryID = "Your_directory_id"; | ||
|
||
//Authenticate the Google Drive API access using the service account key | ||
GoogleCredential credential = GoogleCredential.FromFile(serviceAccountKeyPath).CreateScoped(DriveService.ScopeConstants.Drive); | ||
|
||
//Create the Google Drive service | ||
DriveService service = new DriveService(new BaseClientService.Initializer() | ||
{ | ||
HttpClientInitializer = credential | ||
}); | ||
|
||
//Upload file metadata | ||
var fileMetadata = new Google.Apis.Drive.v3.Data.File() | ||
{ | ||
Name = "Excel.xlsx", | ||
Parents = new List<string>() { directoryID } | ||
}; | ||
|
||
//Create a new file in Google Drive | ||
var request = service.Files.Create(fileMetadata, stream, "application/excel"); | ||
request.Fields = "*"; | ||
var results = await request.UploadAsync(CancellationToken.None); | ||
|
||
// Check the upload status and log the result | ||
if (results.Status == UploadStatus.Failed) | ||
{ | ||
Console.WriteLine("Error uploading"); | ||
} | ||
else | ||
{ | ||
Console.WriteLine("File uploaded successfully"); | ||
} | ||
} | ||
public IActionResult Privacy() | ||
{ | ||
return View(); | ||
} | ||
|
||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] | ||
public IActionResult Error() | ||
{ | ||
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); | ||
} | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
Loading and Saving/Google Drive/Loading/Create Excel/Create Excel/Create Excel.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
<Project Sdk="Microsoft.NET.Sdk.Web"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>net8.0</TargetFramework> | ||
<Nullable>enable</Nullable> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<RootNamespace>Create_Excel</RootNamespace> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<None Remove="AdventureCycles-Logo.png" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<EmbeddedResource Include="AdventureCycles-Logo.png"> | ||
<CopyToOutputDirectory>Always</CopyToOutputDirectory> | ||
</EmbeddedResource> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Google.Apis.Drive.v3" Version="1.68.0.3490" /> | ||
<PackageReference Include="Syncfusion.XlsIO.Net.Core" Version="*" /> | ||
</ItemGroup> | ||
|
||
</Project> |
9 changes: 9 additions & 0 deletions
9
Loading and Saving/Google Drive/Loading/Create Excel/Create Excel/Models/ErrorViewModel.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
namespace Create_Excel.Models | ||
{ | ||
public class ErrorViewModel | ||
{ | ||
public string? RequestId { get; set; } | ||
|
||
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
Loading and Saving/Google Drive/Loading/Create Excel/Create Excel/Program.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
var builder = WebApplication.CreateBuilder(args); | ||
|
||
// Add services to the container. | ||
builder.Services.AddControllersWithViews(); | ||
|
||
var app = builder.Build(); | ||
|
||
// Configure the HTTP request pipeline. | ||
if (!app.Environment.IsDevelopment()) | ||
{ | ||
app.UseExceptionHandler("/Home/Error"); | ||
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. | ||
app.UseHsts(); | ||
} | ||
|
||
app.UseHttpsRedirection(); | ||
app.UseStaticFiles(); | ||
|
||
app.UseRouting(); | ||
|
||
app.UseAuthorization(); | ||
|
||
app.MapControllerRoute( | ||
name: "default", | ||
pattern: "{controller=Home}/{action=Index}/{id?}"); | ||
|
||
app.Run(); |
38 changes: 38 additions & 0 deletions
38
... and Saving/Google Drive/Loading/Create Excel/Create Excel/Properties/launchSettings.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
{ | ||
"$schema": "http://json.schemastore.org/launchsettings.json", | ||
"iisSettings": { | ||
"windowsAuthentication": false, | ||
"anonymousAuthentication": true, | ||
"iisExpress": { | ||
"applicationUrl": "http://localhost:41243", | ||
"sslPort": 44327 | ||
} | ||
}, | ||
"profiles": { | ||
"http": { | ||
"commandName": "Project", | ||
"dotnetRunMessages": true, | ||
"launchBrowser": true, | ||
"applicationUrl": "http://localhost:5127", | ||
"environmentVariables": { | ||
"ASPNETCORE_ENVIRONMENT": "Development" | ||
} | ||
}, | ||
"https": { | ||
"commandName": "Project", | ||
"dotnetRunMessages": true, | ||
"launchBrowser": true, | ||
"applicationUrl": "https://localhost:7005;http://localhost:5127", | ||
"environmentVariables": { | ||
"ASPNETCORE_ENVIRONMENT": "Development" | ||
} | ||
}, | ||
"IIS Express": { | ||
"commandName": "IISExpress", | ||
"launchBrowser": true, | ||
"environmentVariables": { | ||
"ASPNETCORE_ENVIRONMENT": "Development" | ||
} | ||
} | ||
} | ||
} |
Oops, something went wrong.