Skip to content

Commit

Permalink
Made datatable generation method public on ExtractedDataConverter.
Browse files Browse the repository at this point in the history
Added overloads for ExtractedDataConverter methods to use a DataTable object to generate CSV and Worksheets.
  • Loading branch information
CallumHoughton18 committed May 23, 2019
1 parent c7b2576 commit 64df62d
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
Expand Down Expand Up @@ -37,10 +38,36 @@ public void ConvertToWorksheetValidTest()
}
}

[Test]
public void ConvertToWorksheetFromDataTableValidTest()
{
var dataTable = ExtractedDataConverter.GenerateDataTable(XLSXDataExtractorTestHelper.GenTwoDimensionalCollectionOfExtractedData());
var worksheet = ExtractedDataConverter.ConvertToWorksheet(dataTable);

var cellsUsed = worksheet.CellsUsed();

bool emptyCellsFromDataTable = cellsUsed.Any(x => x.Address.ColumnNumber == 6 && x.Address.RowNumber > 1);
Assert.That(emptyCellsFromDataTable, Is.False);
foreach (var cell in cellsUsed)
{
//generated table should be 12 cells by 12 cells start from cell 0,0.
Assert.That(cell.Address.RowNumber, Is.LessThan(12));
Assert.That(cell.Address.ColumnNumber, Is.LessThan(12));
}
}

[Test]
public void ConvertToWorksheetNullCollectionTest()
{
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToWorksheet(null));
IEnumerable<IEnumerable<KeyValuePair<string, object>>> nullObj = null;
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToWorksheet(nullObj));
}

[Test]
public void ConvertToWorksheetNullDataTablenTest()
{
DataTable nullObj = null;
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToWorksheet(nullObj));
}

[Test]
Expand All @@ -60,10 +87,29 @@ public void ConvertToCSVValid()
Assert.That(actualCSV, Is.EqualTo(expectedCSV));
}

[Test]
public void ConvertToCSVFromDataTable()
{
string expectedCSV = File.ReadAllText(Path.Combine(executingAssemblyPath, "Files", "ExpectedCSV.txt"));

var dataTable = ExtractedDataConverter.GenerateDataTable(XLSXDataExtractorTestHelper.GenTwoDimensionalCollectionOfExtractedData());
string actualCSV = ExtractedDataConverter.ConvertToCSV(dataTable);

Assert.That(actualCSV, Is.EqualTo(expectedCSV));
}

[Test]
public void ConvertToCSVNullCollectionTest()
{
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToCSV(null));
IEnumerable<IEnumerable<KeyValuePair<string, object>>> nullObj = null;
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToCSV(nullObj));
}

[Test]
public void ConvertToCSVNullDataTableTest()
{
DataTable nullObj = null;
var ex = Assert.Throws<ArgumentNullException>(() => ExtractedDataConverter.ConvertToCSV(nullObj));
}

[Test]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\..\packages\System.Threading.Tasks.Extensions.4.5.1\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/XLSXDataExtractor.Common/XLSXDataExtractor.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
<RepositoryUrl>https://github.com/CallumHoughton18/XLSXDataExtractor</RepositoryUrl>
<PackageProjectUrl>https://github.com/CallumHoughton18/XLSXDataExtractor</PackageProjectUrl>
<RepositoryType>GitHub</RepositoryType>
<Authors>Callum_Houghton</Authors>
<Version>1.0.1</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
20 changes: 19 additions & 1 deletion src/XLSXDataExtractor/ExtractedDataConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ public static IXLWorksheet ConvertToWorksheet(IEnumerable<IEnumerable<KeyValuePa
return xlWorkbook.Worksheet(sheetName);
}

public static IXLWorksheet ConvertToWorksheet(DataTable extractedDataTable)
{
if (extractedDataTable == null) throw new ArgumentNullException("extractedDataTable", "Cannot be null");

string sheetName = "newsheet";
var xlWorkbook = new XLWorkbook();
xlWorkbook.AddWorksheet(extractedDataTable, sheetName);
return xlWorkbook.Worksheet(sheetName);
}

public static string ConvertToCSV(IEnumerable<IEnumerable<KeyValuePair<string, object>>> TwoDiColOfExtractedData)
{
if (TwoDiColOfExtractedData == null) throw new ArgumentNullException("TwoDiColOfExtractedData", "Cannot be null");
Expand All @@ -34,7 +44,15 @@ public static string ConvertToCSV(IEnumerable<IEnumerable<KeyValuePair<string, o
return csvText;
}

private static DataTable GenerateDataTable(IEnumerable<IEnumerable<KeyValuePair<string, object>>> TwoDiColOfExtractedData)
public static string ConvertToCSV(DataTable extractedDataTable)
{
if (extractedDataTable == null) throw new ArgumentNullException("extractedDataTable", "Cannot be null");

string csvText = extractedDataTable.ToCSVString();
return csvText;
}

public static DataTable GenerateDataTable(IEnumerable<IEnumerable<KeyValuePair<string, object>>> TwoDiColOfExtractedData)
{
var dataTable = new DataTable();

Expand Down
6 changes: 4 additions & 2 deletions src/XLSXDataExtractor/XLSXDataExtractor.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Authors>Callum_Houghton</Authors>
<Description>An extension library for ClosedXML to allow for quick and easy bulk data extraction from Excel Workbooks into various formats.</Description>
<PackageReleaseNotes>Initial Release</PackageReleaseNotes>
<PackageReleaseNotes>Added functionality to generate DataTable object from extracted data.
Added functionality to ExtractedDataConverter class to generate a CSV or Worksheet from a given DataTable object.</PackageReleaseNotes>
<PackageId>XLSX_Data_Extractor</PackageId>
<PackageProjectUrl>https://github.com/CallumHoughton18/XLSXDataExtractor</PackageProjectUrl>
<RepositoryUrl>https://github.com/CallumHoughton18/XLSXDataExtractor</RepositoryUrl>
Expand All @@ -13,6 +14,7 @@
<PackageIconUrl>https://raw.githubusercontent.com/CallumHoughton18/XLSXDataExtractor/master/Media/Icon64x64.png</PackageIconUrl>
<PackageLicenseExpression></PackageLicenseExpression>
<PackageLicenseFile>MITLicense.txt</PackageLicenseFile>
<Version>1.1.0</Version>
</PropertyGroup>

<ItemGroup>
Expand Down

0 comments on commit 64df62d

Please sign in to comment.