Skip to content

Commit 9637ae4

Browse files
author
Fahad Adeel
committed
Encapsulation Worksheet constructor and added a Factory class for Worksheet Object creation.
1 parent 0ee6ff2 commit 9637ae4

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

FileFormat.Cells/Workbook.cs

+5-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public Workbook()
5757
worksheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData);
5858

5959
// Adding your Worksheet object to Worksheets list
60-
var newWorksheet = new Worksheet(worksheetPart, worksheetPart.Worksheet);
60+
//var newWorksheet = new Worksheet(worksheetPart, worksheetPart.Worksheet);
61+
var newWorksheet = Worksheet.WorksheetFactory.CreateInstance(worksheetPart, worksheetPart.Worksheet);
6162
this.Worksheets.Add(newWorksheet);
6263

6364
this.stylesPart = this.spreadsheetDocument.WorkbookPart.AddNewPart<WorkbookStylesPart>();
@@ -124,7 +125,7 @@ private void InitializeWorksheets()
124125
var worksheetPart = (WorksheetPart)(this.workbookpart.GetPartById(sheet.Id));
125126
var worksheet = worksheetPart.Worksheet;
126127
var sheetData = worksheet.Elements<SheetData>().FirstOrDefault() ?? new SheetData();
127-
this.Worksheets.Add(new Worksheet(worksheetPart, worksheet));
128+
this.Worksheets.Add(Worksheet.WorksheetFactory.CreateInstance(worksheetPart, worksheetPart.Worksheet));
128129
}
129130
}
130131

@@ -227,7 +228,7 @@ public Worksheet AddSheet(string sheetName)
227228
newWorksheetPart.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet(sheetData);
228229

229230
// Create a new Worksheet object and add it to Worksheets list
230-
var newWorksheet = new Worksheet(newWorksheetPart, newWorksheetPart.Worksheet);
231+
var newWorksheet = Worksheet.WorksheetFactory.CreateInstance(newWorksheetPart, newWorksheetPart.Worksheet);
231232
this.Worksheets.Add(newWorksheet);
232233

233234
// Append a new sheet and associate it with the workbook
@@ -285,7 +286,7 @@ private void SyncWorksheets()
285286
var wp = (WorksheetPart)(this.workbookpart.GetPartById(sh.Id));
286287
var ws = wp.Worksheet;
287288
var sd = ws.Elements<SheetData>().FirstOrDefault() ?? new SheetData();
288-
this.Worksheets.Add(new Worksheet(wp, ws));
289+
this.Worksheets.Add(Worksheet.WorksheetFactory.CreateInstance(wp, wp.Worksheet));
289290
}
290291
}
291292

FileFormat.Cells/Worksheet.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public sealed class Worksheet
2525
/// </summary>
2626
/// <param name="worksheetPart">The worksheet part of the document.</param>
2727
/// <param name="worksheet">The underlying OpenXML worksheet instance.</param>
28-
internal Worksheet(WorksheetPart worksheetPart, DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet)
28+
private Worksheet(WorksheetPart worksheetPart, DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet)
2929
{
3030
_worksheetPart = worksheetPart ?? throw new ArgumentNullException(nameof(worksheetPart));
3131

@@ -36,6 +36,14 @@ internal Worksheet(WorksheetPart worksheetPart, DocumentFormat.OpenXml.Spreadshe
3636
this.Cells = new CellIndexer(this);
3737
}
3838

39+
public class WorksheetFactory
40+
{
41+
public static Worksheet CreateInstance(WorksheetPart worksheetPart, DocumentFormat.OpenXml.Spreadsheet.Worksheet worksheet)
42+
{
43+
return new Worksheet(worksheetPart, worksheet);
44+
}
45+
}
46+
3947
/// <summary>
4048
/// Gets or sets the name of the worksheet.
4149
/// </summary>

FileFormat.Cells_Tests/UnitTest1.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
public class UnitTest1
66
{
77

8-
string testFilePath = "/Users/fahadadeelqazi/Downloads/test_fahad_new_protected_image.xlsx";
9-
private string imageInputPath = "/Users/fahadadeelqazi/Downloads/ImageCells.png";
10-
string outputDirectory = "/Users/fahadadeelqazi/Downloads/";
8+
string testFilePath = "Z:\\Downloads\\test_fahad_new_protected_image.xlsx";
9+
private string imageInputPath = "Z:\\Downloads\\ImageCells.png";
10+
string outputDirectory = "Z:\\Downloads\\";
1111

1212
[TestInitialize]
1313
public void Setup()

0 commit comments

Comments
 (0)