diff --git a/ClosedXML/Excel/Cells/IXLCell.cs b/ClosedXML/Excel/Cells/IXLCell.cs
index d685041..c8aef22 100644
--- a/ClosedXML/Excel/Cells/IXLCell.cs
+++ b/ClosedXML/Excel/Cells/IXLCell.cs
@@ -173,6 +173,13 @@
IXLRange InsertData(IEnumerable data);
///
+ /// Inserts the data of a data table.
+ ///
+ /// The data table.
+ /// The range occupied by the inserted data
+ IXLRange InsertData(DataTable dataTable);
+
+ ///
/// Inserts the IEnumerable data elements as a table and returns it.
/// The new table will receive a generic name: Table#
///
@@ -260,7 +267,7 @@
IXLCells InsertCellsBefore(int numberOfColumns);
///
- /// Creates a named range out of this cell.
+ /// Creates a named range out of this cell.
/// If the named range exists, it will add this range to that named range.
/// The default scope for the named range is Workbook.
///
@@ -268,7 +275,7 @@
IXLCell AddToNamed(String rangeName);
///
- /// Creates a named range out of this cell.
+ /// Creates a named range out of this cell.
/// If the named range exists, it will add this range to that named range.
/// Name of the range.
/// The scope for the named range.
@@ -276,7 +283,7 @@
IXLCell AddToNamed(String rangeName, XLScope scope);
///
- /// Creates a named range out of this cell.
+ /// Creates a named range out of this cell.
/// If the named range exists, it will add this range to that named range.
/// Name of the range.
/// The scope for the named range.
diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs
index fc5db80..e736656 100644
--- a/ClosedXML/Excel/Cells/XLCell.cs
+++ b/ClosedXML/Excel/Cells/XLCell.cs
@@ -442,6 +442,8 @@
if (SetRangeColumns(value)) return;
+ if (SetDataTable(value)) return;
+
if (SetEnumerable(value)) return;
if (SetRange(value)) return;
@@ -688,7 +690,7 @@
{
if (data == null) return null;
- if (data.Rows.Count > 0) return InsertTable(data.AsEnumerable(), tableName, createTable);
+ if (data.Rows.Cast().Any()) return InsertTable(data.Rows.Cast(), tableName, createTable);
var ro = Address.RowNumber;
var co = Address.ColumnNumber;
@@ -812,6 +814,11 @@
return null;
}
+ public IXLRange InsertData(DataTable dataTable)
+ {
+ return InsertData(dataTable.Rows);
+ }
+
public IXLStyle Style
{
get { return GetStyle(); }
@@ -1617,6 +1624,13 @@
return false;
}
+ private bool SetDataTable(object o)
+ {
+ var dataTable = o as DataTable;
+ if (dataTable == null) return false;
+ return InsertData(dataTable) != null;
+ }
+
private bool SetEnumerable(object collectionObject)
{
// IXLRichText implements IEnumerable, but we don't want to handle this here.
diff --git a/ClosedXML_Examples/Misc/AddingDataSet.cs b/ClosedXML_Examples/Misc/AddingDataSet.cs
index 11c4b9c..a8d1e68 100644
--- a/ClosedXML_Examples/Misc/AddingDataSet.cs
+++ b/ClosedXML_Examples/Misc/AddingDataSet.cs
@@ -1,45 +1,11 @@
+using ClosedXML.Excel;
using System;
using System.Data;
-using ClosedXML.Excel;
namespace ClosedXML_Examples.Misc
{
public class AddingDataSet : IXLExample
{
- #region Variables
-
- // Public
-
- // Private
-
-
- #endregion
-
- #region Properties
-
- // Public
-
- // Private
-
- // Override
-
-
- #endregion
-
- #region Events
-
- // Public
-
- // Private
-
- // Override
-
-
- #endregion
-
- #region Methods
-
- // Public
public void Create(String filePath)
{
var wb = new XLWorkbook();
@@ -52,7 +18,6 @@
wb.SaveAs(filePath);
}
- // Private
private DataSet GetDataSet()
{
var ds = new DataSet();
@@ -78,9 +43,5 @@
table.Rows.Add(100, "Dilantin", "Melanie", new DateTime(2000, 1, 5));
return table;
}
- // Override
-
-
- #endregion
}
}
diff --git a/ClosedXML_Examples/Misc/Collections.cs b/ClosedXML_Examples/Misc/Collections.cs
index 39b416d..a9b9fe5 100644
--- a/ClosedXML_Examples/Misc/Collections.cs
+++ b/ClosedXML_Examples/Misc/Collections.cs
@@ -68,7 +68,7 @@
var dataTable = GetTable();
ws.Cell(6, 1).Value = "DataTable";
ws.Range(6, 1, 6, 4).Merge().AddToNamed("Titles");
- ws.Cell(7, 1).Value = dataTable.AsEnumerable();
+ ws.Cell(7, 1).Value = dataTable;
// From a query
var list = new List();
@@ -83,8 +83,7 @@
ws.Cell(6, 6).Value = "Query";
ws.Range(6, 6, 6, 8).Merge().AddToNamed("Titles");
- ws.Cell(7, 6).Value = people.AsEnumerable(); // Very Important to call the AsEnumerable method
- // otherwise it won't be copied.
+ ws.Cell(7, 6).Value = people;
// Prepare the style for the titles
@@ -92,7 +91,7 @@
titlesStyle.Font.Bold = true;
titlesStyle.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
titlesStyle.Fill.BackgroundColor = XLColor.Cyan;
-
+
// Format all titles in one shot
wb.NamedRanges.NamedRange("Titles").Ranges.Style = titlesStyle;
diff --git a/ClosedXML_Examples/Misc/InsertingData.cs b/ClosedXML_Examples/Misc/InsertingData.cs
index d0ade19..69c11a8 100644
--- a/ClosedXML_Examples/Misc/InsertingData.cs
+++ b/ClosedXML_Examples/Misc/InsertingData.cs
@@ -37,7 +37,7 @@
var dataTable = GetTable();
ws.Cell(6, 1).Value = "From DataTable";
ws.Range(6, 1, 6, 4).Merge().AddToNamed("Titles");
- ws.Cell(7, 1).InsertData(dataTable.AsEnumerable());
+ ws.Cell(7, 1).InsertData(dataTable);
// From a query
var list = new List();
@@ -52,14 +52,14 @@
ws.Cell(6, 6).Value = "From Query";
ws.Range(6, 6, 6, 8).Merge().AddToNamed("Titles");
- ws.Cell(7, 6).InsertData(people.AsEnumerable());
+ ws.Cell(7, 6).InsertData(people);
// Prepare the style for the titles
var titlesStyle = wb.Style;
titlesStyle.Font.Bold = true;
titlesStyle.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
titlesStyle.Fill.BackgroundColor = XLColor.Cyan;
-
+
// Format all titles in one shot
wb.NamedRanges.NamedRange("Titles").Ranges.Style = titlesStyle;
diff --git a/ClosedXML_Examples/Misc/InsertingTables.cs b/ClosedXML_Examples/Misc/InsertingTables.cs
index 50be801..fb6a3a0 100644
--- a/ClosedXML_Examples/Misc/InsertingTables.cs
+++ b/ClosedXML_Examples/Misc/InsertingTables.cs
@@ -38,7 +38,7 @@
var dataTable = GetTable();
ws.Cell(7, 1).Value = "From DataTable";
ws.Range(7, 1, 7, 4).Merge().AddToNamed("Titles");
- ws.Cell(8, 1).InsertTable(dataTable.AsEnumerable());
+ ws.Cell(8, 1).InsertTable(dataTable);
// From a query
var list = new List();
@@ -53,7 +53,7 @@
ws.Cell(7, 6).Value = "From Query";
ws.Range(7, 6, 7, 8).Merge().AddToNamed("Titles");
- ws.Cell(8, 6).InsertTable(people.AsEnumerable());
+ ws.Cell(8, 6).InsertTable(people);
// Prepare the style for the titles
var titlesStyle = wb.Style;
diff --git a/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs b/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs
index c630f5a..25dff84 100644
--- a/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs
+++ b/ClosedXML_Tests/Excel/AutoFilters/AutoFilterTests.cs
@@ -29,7 +29,7 @@
listOfArr.Add(6);
table.DataRange.InsertRowsBelow(listOfArr.Count - table.DataRange.RowCount());
- table.DataRange.FirstCell().InsertData(listOfArr.AsEnumerable());
+ table.DataRange.FirstCell().InsertData(listOfArr);
Assert.AreEqual("A1:A5", table.AutoFilter.Range.RangeAddress.ToStringRelative());
}
@@ -73,4 +73,4 @@
Assert.That(!ws.AutoFilter.Enabled);
}
}
-}
\ No newline at end of file
+}
diff --git a/ClosedXML_Tests/Excel/Cells/XLCellTests.cs b/ClosedXML_Tests/Excel/Cells/XLCellTests.cs
index 31e66f9..3ca287e 100644
--- a/ClosedXML_Tests/Excel/Cells/XLCellTests.cs
+++ b/ClosedXML_Tests/Excel/Cells/XLCellTests.cs
@@ -59,7 +59,7 @@
IXLCell cell = ws.Cell("A1");
var doubleList = new List { 1.0 / 0.0 };
- cell.Value = doubleList.AsEnumerable();
+ cell.Value = doubleList;
Assert.AreNotEqual(XLCellValues.Number, cell.DataType);
}
@@ -70,7 +70,7 @@
IXLCell cell = ws.Cell("A1");
var doubleList = new List { 0.0 / 0.0 };
- cell.Value = doubleList.AsEnumerable();
+ cell.Value = doubleList;
Assert.AreNotEqual(XLCellValues.Number, cell.DataType);
}
diff --git a/ClosedXML_Tests/Excel/Styles/NumberFormatTests.cs b/ClosedXML_Tests/Excel/Styles/NumberFormatTests.cs
index 3c94664..04d7a8b 100644
--- a/ClosedXML_Tests/Excel/Styles/NumberFormatTests.cs
+++ b/ClosedXML_Tests/Excel/Styles/NumberFormatTests.cs
@@ -24,7 +24,7 @@
table.Rows.Add(new DateTime(2017, 1, 1).AddMonths(i));
}
- ws.Cell("A1").InsertData(table.AsEnumerable());
+ ws.Cell("A1").InsertData(table);
Assert.AreEqual("yy-MM-dd", ws.Cell("A5").Style.DateFormat.Format);
}
diff --git a/ClosedXML_Tests/Excel/Tables/TablesTests.cs b/ClosedXML_Tests/Excel/Tables/TablesTests.cs
index ddc7b84..1a3819b 100644
--- a/ClosedXML_Tests/Excel/Tables/TablesTests.cs
+++ b/ClosedXML_Tests/Excel/Tables/TablesTests.cs
@@ -122,7 +122,7 @@
DataRow dr = dt.NewRow();
dr[columnName] = "some text";
dt.Rows.Add(dr);
- ws.Cell(1, 1).InsertTable(dt.AsEnumerable());
+ ws.Cell(1, 1).InsertTable(dt);
IXLTable table1 = ws.Table(0);
string fieldName1 = table1.Field(0).Name;