From 74f0abdd08ebcb728229426f32c5771cb650f771 Mon Sep 17 00:00:00 2001 From: MOHAN CHANDRAN Date: Tue, 12 Aug 2025 22:01:59 +0530 Subject: [PATCH] 975271---Sparklines-Usecase --- .../SalesTrendWithSparklines.sln | 25 ++++++++ .../Data/Sales Data.xlsx | Bin 0 -> 10056 bytes .../SalesTrendWithSparklines/Program.cs | 59 ++++++++++++++++++ .../SalesTrendWithSparklines.csproj | 14 +++++ 4 files changed, 98 insertions(+) create mode 100644 Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines.sln create mode 100644 Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Data/Sales Data.xlsx create mode 100644 Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Program.cs create mode 100644 Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/SalesTrendWithSparklines.csproj diff --git a/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines.sln b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines.sln new file mode 100644 index 00000000..4f3f2c9c --- /dev/null +++ b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36109.1 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SalesTrendWithSparklines", "SalesTrendWithSparklines\SalesTrendWithSparklines.csproj", "{65DA17F0-EE05-41AC-B641-277B8ADDC9A6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {65DA17F0-EE05-41AC-B641-277B8ADDC9A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65DA17F0-EE05-41AC-B641-277B8ADDC9A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65DA17F0-EE05-41AC-B641-277B8ADDC9A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65DA17F0-EE05-41AC-B641-277B8ADDC9A6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {028FC0D5-08B9-4204-8E36-62B25FAD4F06} + EndGlobalSection +EndGlobal diff --git a/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Data/Sales Data.xlsx b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Data/Sales Data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8e4161c9c04ba77507b1c01f5d118cf445fce248 GIT binary patch literal 10056 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 literal 0 HcmV?d00001 diff --git a/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Program.cs b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Program.cs new file mode 100644 index 00000000..e8cf6aea --- /dev/null +++ b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/Program.cs @@ -0,0 +1,59 @@ + +using Syncfusion.XlsIO; +using Syncfusion.Drawing; +using System.IO; + +class SalesTrendWithSparklines +{ + static void Main() + { + using (ExcelEngine excelEngine = new ExcelEngine()) + { + IApplication application = excelEngine.Excel; + application.DefaultVersion = ExcelVersion.Xlsx; + + // Load the Excel file with sales data + FileStream inputStream = new FileStream("../../../Data/Sales Data.xlsx", FileMode.Open, FileAccess.Read); + + IWorkbook workbook = application.Workbooks.Open(inputStream); + IWorksheet sheet = workbook.Worksheets[0]; + + sheet["G1"].Text = "Sales Trend"; + sheet["G1"].CellStyle.Font.Bold = true; + + // Create a Sparkline Group + ISparklineGroup sparklineGroup = sheet.SparklineGroups.Add(); + + // Add a Line Sparkline to the group + ISparklines sparklines = sparklineGroup.Add(); + + // Define the data range and reference range for the sparkline + IRange dataRange = sheet.Range["B2:F26"]; + IRange referenceRange = sheet.Range["G2:G26"]; + sparklines.Add(dataRange, referenceRange); + + // Set the sparkline type to Line + sparklineGroup.SparklineType = SparklineType.Line; + + // Customizing Line Sparkline + sparklineGroup.LineWeight = 1; + sparklineGroup.ShowMarkers = true; + + //Set sparkline line color + sparklineGroup.SparklineColor = Color.Orange; + + // Set the high and low point colors + sparklineGroup.HighPointColor = Color.Red; + sparklineGroup.LowPointColor = Color.Green; + + //Customizing markers + sparklineGroup.MarkersColor = Color.Blue; + + // Save the Excel file + using (FileStream stream = new FileStream("SalesDataTrend.xlsx", FileMode.Create, FileAccess.Write)) + { + workbook.SaveAs(stream); + } + } + } +} diff --git a/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/SalesTrendWithSparklines.csproj b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/SalesTrendWithSparklines.csproj new file mode 100644 index 00000000..6669812f --- /dev/null +++ b/Use Cases/SalesTrendWithSparklines/SalesTrendWithSparklines/SalesTrendWithSparklines.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + +