diff --git a/.vs/config/applicationhost.config b/.vs/config/applicationhost.config new file mode 100644 index 0000000..113af3d --- /dev/null +++ b/.vs/config/applicationhost.config @@ -0,0 +1,1047 @@ + + + + + + + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/CONTRIBUTING.md diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj index 2641ffc..7de9988 100644 --- a/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML.csproj @@ -342,7 +342,9 @@ .editorconfig - + + Designer + + diff --git a/ClosedXML/Extensions.cs b/ClosedXML/Extensions.cs index 747961f..7655168 100644 --- a/ClosedXML/Extensions.cs +++ b/ClosedXML/Extensions.cs @@ -172,29 +172,9 @@ public static class IntegerExtensions { - private static readonly NumberFormatInfo nfi = CultureInfo.InvariantCulture.NumberFormat; - - [ThreadStatic] - private static Dictionary intToString; - public static String ToInvariantString(this Int32 value) { - String sValue; - if (intToString == null) - { - intToString = new Dictionary(); - sValue = value.ToString(nfi); - intToString.Add(value, sValue); - } - else - { - if (!intToString.TryGetValue(value, out sValue)) - { - sValue = value.ToString(nfi); - intToString.Add(value, sValue); - } - } - return sValue; + return value.ToString(CultureInfo.InvariantCulture.NumberFormat); } } diff --git a/ClosedXML_Examples/ClosedXML_Examples.csproj.original b/ClosedXML_Examples/ClosedXML_Examples.csproj.original new file mode 100644 index 0000000..7241f27 --- /dev/null +++ b/ClosedXML_Examples/ClosedXML_Examples.csproj.original @@ -0,0 +1,196 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {03A518D0-1CB7-488E-861C-C4E782B27A46} + Exe + Properties + ClosedXML_Examples + ClosedXML_Examples + v4.5.2 + + + 512 + ..\ + true + + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + false + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + false + + + ClosedXML_Examples.Program + + + true + + + ClosedXML.snk + + + true + + + + ..\packages\DocumentFormat.OpenXml.2.7.1\lib\net45\DocumentFormat.OpenXml.dll + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .editorconfig + + + + + + + + {BD5E6BFE-E837-4A35-BCA9-39667D873A20} + ClosedXML + + + + + + + + + + + \ No newline at end of file diff --git a/ClosedXML_Sandbox/ClosedXML_Sandbox.csproj.original b/ClosedXML_Sandbox/ClosedXML_Sandbox.csproj.original new file mode 100644 index 0000000..2efd458 --- /dev/null +++ b/ClosedXML_Sandbox/ClosedXML_Sandbox.csproj.original @@ -0,0 +1,85 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {38B882F0-E6F2-45C5-9BE9-CDC27FBEB4AB} + Exe + Properties + ClosedXML_Sandbox + ClosedXML_Sandbox + v4.5.2 + 512 + ..\ + true + + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + false + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + false + + + + ..\packages\DocumentFormat.OpenXml.2.7.1\lib\net45\DocumentFormat.OpenXml.dll + + + + + + + + + + + + + + + + + + + + + .editorconfig + + + + + PreserveNewest + + + + + {bd5e6bfe-e837-4a35-bca9-39667d873a20} + ClosedXML + + + {03A518D0-1CB7-488E-861C-C4E782B27A46} + ClosedXML_Examples + + + + + \ No newline at end of file diff --git a/ClosedXML_Sandbox/Open XML Explained.pdf b/ClosedXML_Sandbox/Open XML Explained.pdf new file mode 100644 index 0000000..dce5eb5 --- /dev/null +++ b/ClosedXML_Sandbox/Open XML Explained.pdf Binary files differ diff --git a/ClosedXML_Sandbox/SampleSheet.xlsm b/ClosedXML_Sandbox/SampleSheet.xlsm new file mode 100644 index 0000000..7442d5c --- /dev/null +++ b/ClosedXML_Sandbox/SampleSheet.xlsm Binary files differ diff --git a/ClosedXML_Sandbox/template.zip b/ClosedXML_Sandbox/template.zip new file mode 100644 index 0000000..1917de4 --- /dev/null +++ b/ClosedXML_Sandbox/template.zip Binary files differ diff --git a/ClosedXML_Sandbox/test - Copy.xlsx b/ClosedXML_Sandbox/test - Copy.xlsx new file mode 100644 index 0000000..a7102bc --- /dev/null +++ b/ClosedXML_Sandbox/test - Copy.xlsx Binary files differ diff --git a/ClosedXML_Sandbox/test.xlsm b/ClosedXML_Sandbox/test.xlsm new file mode 100644 index 0000000..5d8a4ec --- /dev/null +++ b/ClosedXML_Sandbox/test.xlsm Binary files differ diff --git a/ClosedXML_Sandbox/test.zip b/ClosedXML_Sandbox/test.zip new file mode 100644 index 0000000..1eb5ef3 --- /dev/null +++ b/ClosedXML_Sandbox/test.zip Binary files differ diff --git a/ClosedXML_Sandbox/test2.ZIP b/ClosedXML_Sandbox/test2.ZIP new file mode 100644 index 0000000..1a3dbd1 --- /dev/null +++ b/ClosedXML_Sandbox/test2.ZIP Binary files differ diff --git a/ClosedXML_Tests/ClosedXML_Tests.csproj.original b/ClosedXML_Tests/ClosedXML_Tests.csproj.original new file mode 100644 index 0000000..49e1111 --- /dev/null +++ b/ClosedXML_Tests/ClosedXML_Tests.csproj.original @@ -0,0 +1,287 @@ + + + + Debug + AnyCPU + + + 2.0 + {09B066ED-E4A7-4545-A1A4-FF03DD524BDF} + Library + Properties + ClosedXML_Tests + ClosedXML_Tests + v4.5.2 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + ..\ + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE;$(AppVeyor) + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE;$(AppVeyor) + prompt + 4 + false + + + true + + + ClosedXML.snk + + + + ..\packages\DocumentFormat.OpenXml.2.7.1\lib\net45\DocumentFormat.OpenXml.dll + True + + + + ..\packages\NUnit.3.4.1\lib\net45\nunit.framework.dll + True + + + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {BD5E6BFE-E837-4A35-BCA9-39667D873A20} + ClosedXML + + + {03A518D0-1CB7-488E-861C-C4E782B27A46} + ClosedXML_Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .editorconfig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ECMA-376, Third Edition, Part 1 - Fundamentals And Markup Language Reference.zip b/ECMA-376, Third Edition, Part 1 - Fundamentals And Markup Language Reference.zip new file mode 100644 index 0000000..32c8dee --- /dev/null +++ b/ECMA-376, Third Edition, Part 1 - Fundamentals And Markup Language Reference.zip Binary files differ diff --git a/NetJSON.dll b/NetJSON.dll new file mode 100644 index 0000000..66ee271 --- /dev/null +++ b/NetJSON.dll Binary files differ diff --git a/TestHelper.cs.checkedin b/TestHelper.cs.checkedin new file mode 100644 index 0000000..4384b99 --- /dev/null +++ b/TestHelper.cs.checkedin @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.IO; +using System.Threading; +using ClosedXML.Excel; +using ClosedXML_Examples; +using DocumentFormat.OpenXml.Drawing; +using NUnit.Framework; +using Path = System.IO.Path; + +namespace ClosedXML_Tests +{ + internal static class TestHelper + { + public static string CurrencySymbol + { + get { return Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol; } + } + + //Note: Run example tests parameters + public static string TestsOutputDirectory + { + get + { + return Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); + } + + } + + public const string ActualTestResultPostFix = ""; + public static readonly string TestsExampleOutputDirectory = Path.Combine(TestsOutputDirectory, "Examples"); + + private const bool CompareWithResources = true; + + private static readonly ResourceFileExtractor _extractor = new ResourceFileExtractor(null, ".Resource.Examples."); + + public static void SaveWorkbook(XLWorkbook workbook, params string[] fileNameParts) + { + workbook.SaveAs(Path.Combine(new string[] { TestsOutputDirectory }.Concat(fileNameParts).ToArray()), true); + } + + // Because different fonts are installed on Unix, + // the columns widths after AdjustToContents() will + // cause the tests to fail. + // Therefore we ignore the width attribute when running on Unix + public static bool IsRunningOnUnix + { + get + { + int p = (int)Environment.OSVersion.Platform; + return ((p == 4) || (p == 6) || (p == 128)); + } + } + + public static void RunTestExample(string filePartName) + where T : IXLExample, new() + { + // Make sure tests run on a deterministic culture + Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); + + var example = new T(); + string[] pathParts = filePartName.Split(new char[] {'\\'}); + string filePath1 = Path.Combine(new List() { TestsExampleOutputDirectory }.Concat(pathParts).ToArray()); + + var extension = Path.GetExtension(filePath1); + var directory = Path.GetDirectoryName(filePath1); + + var fileName= Path.GetFileNameWithoutExtension(filePath1); + fileName += ActualTestResultPostFix; + fileName = Path.ChangeExtension(fileName, extension); + + filePath1 = Path.Combine(directory, "z" + fileName); + var filePath2 = Path.Combine(directory, fileName); + //Run test + example.Create(filePath1); + new XLWorkbook(filePath1).SaveAs(filePath2, true); + bool success = true; +#pragma warning disable 162 + try + { + //Compare + // ReSharper disable ConditionIsAlwaysTrueOrFalse + if (CompareWithResources) + // ReSharper restore ConditionIsAlwaysTrueOrFalse + + { + string resourcePath = filePartName.Replace('\\', '.').TrimStart('.'); + using (var streamExpected = _extractor.ReadFileFromResToStream(resourcePath)) + using (var streamActual = File.OpenRead(filePath2)) + { + string message; + success = ExcelDocsComparer.Compare(streamActual, streamExpected, TestHelper.IsRunningOnUnix, out message); + var formattedMessage = + String.Format( + "Actual file '{0}' is different than the expected file '{1}'. The difference is: '{2}'", + filePath2, resourcePath, message); + + Assert.IsTrue(success, formattedMessage); + } + } + } + finally + { + //if (success && File.Exists(filePath)) File.Delete(filePath); + } +#pragma warning restore 162 + } + + public static string GetResourcePath(string filePartName) + { + return filePartName.Replace('\\', '.').TrimStart('.'); + } + + public static Stream GetStreamFromResource(string resourcePath) + { + var extractor = new ResourceFileExtractor(null, ".Resource."); + return extractor.ReadFileFromResToStream(resourcePath); + } + + public static void LoadFile(string filePartName) + { + using (var stream = GetStreamFromResource(GetResourcePath(filePartName))) + { + var wb = new XLWorkbook(stream); + wb.Dispose(); + } + } + } +} diff --git a/issues.txt b/issues.txt new file mode 100644 index 0000000..7897ab6 --- /dev/null +++ b/issues.txt @@ -0,0 +1,249 @@ + #249 Invalid Hyperlink: Malformed URI is embedded as a hyperlink in the document. + #248 Autofilter Removed When Copying Sheet + #247 Asp.Net file delivering example question + #246 Reworked conditional formatting behavior and added some changes + #245 Add formula for SumProduct + #244 How to add IEnumerable object to ClosedXML ? + #243 HELP PLEASE! Applying AutoFilter changes formula references + #242 Please support .Net Core / .Net Standard duplicate + #241 Custom Filter + #240 InsertRowsBelow slower than InsertData + #239 Get "Identifier expected." when try to read a value duplicate + #238 Columns().AdjustToContents - TableHeader Column names ? + #237 Columns().AdjustToContents(1, 20) - throwing several System.Exception + #236 Support ConditionalFormat DataBar like Office 2010 + #235 Replace instances of Exception class with instances of other sub clas + #234 Open excel and add row + #233 Don't crash when file contains multiple default styles + #232 Column.AdjustToContents(): Inspect worksheet and table autofilters to leave space for arrow + #231 Text() function - return string as is if input value is already a string + #230 0.86 Sequence contains more than one matching element enhancement + #229 Can we do the format and group column on the Pivot Table? Parked Sample file required + #228 Set ColumnOrderAttribute Obsolete + #227 Implement new XLColumnAttribute + #226 Formula Text excel different behavior bug + #225 Upgrade OpenXML to v2.7.1 + #224 Columns().AdjustToContents(1, 20) - Performance regression Sample file required + #223 'br' start tag on line #### position ## does not match end tag of 'font' + #222 Add VmlDrawing Id's to context to avoid reuse. + #221 Id conflicts with the Id of an existing relationship. bug + #220 Save Existing Excel file: File gets corrupted + #219 Cannot open existing Excel File + #218 Pivot tables default filter + #217 Conditional formatting to stop when true + #216 Faster way to search for text + #215 XLConditionalFormat CopyFrom NULL exception + #214 Don't reference cell to get row height + #213 InsertRowsBelow fails with ArgumentException when there is a comment below the new rows bug + #212 Preserve cell format when inserting table or data + #211 Issue175 use xlparser to parse print area + #210 Use FastMember instead of slow Reflection + #209 Implement new XLColumnAttribute + #208 Add attribute to ignore column + #207 new XLWorkbook() is working too slow + #206 default cell style invalid + #205 IXLColumn.Delete() sometimes creates corrupt XLSX files. + #204 Better detection of numerical data types. Not only System.Double. + #203 Remove orphaned drawings from worksheets + #202 cannot operate with existing excel file + #201 decimal datatype not handled properly as number + #200 Preserve whitespace in cells. + #199 Classic layout should be disabled by default. + #198 Current NuGet packages are Debug Builds failing validation on non US systems help wanted + #197 Closedxml error after merging cells Sample file required + #196 Theme XLColor to System.Drawing.Color question + #195 fixed null reference exception + #194 Cell with only white space is trimmed bug + #193 DataValidation not working copy from another cell + #192 sheet.Cell("B3").InsertData(table.AsEnumerable()) doesn't apply a user defined cell format bug + #191 ClassicPivotTableLayout does not work bug + #190 Exception opening xlsx with existing Pivot tables Sample file required + #189 Requested value 'TableStyleQueryResult' was not found Parked + #188 Tally.cs not found Sample file required + #187 Formula Row(A1) is not supported + #186 Deduce default header and footer font from worksheet + #185 Correctly deduce data type from number format string if data type is number (as for LibreOffice files). + #184 Can we write data and char in power point file by ClosedXML + #183 ClosedXML throwing out of memory exception when exporting 73000 records + #182 InsertData Skipping Columns + #181 ClosedXML not handling dates correctly bug + #180 Implement sheet zooming + #179 Pivot table loading enhancements and collapsing fields + #178 'System.ApplicationException' + #177 Issue175 parse commas in print area + #176 Saving value date '1000-01-01' in xlsx + #175 Allow references to worksheet with a space in its name + #174 Header/Footer length error - xlsx file bug + #173 Cap column width at 255 + #172 Allow pivot table field to be a value field and a row/column/filter field + #171 PivotTable created from LINQ query is corrupt but recoverable in Excel + #170 AdjustToContents() will adjust to invalid values + #169 Header/Footer Text Formatting question + #168 Disabling Autofilter + #167 Create file in memory + #166 Cannot add New Line + #165 Dispose hell + #164 Adding rows clears Conditional Formatting + #163 Can't retrieve a excel file from a code + #162 Cannot save workbooks + #161 Shift Conditional Formats + #160 Conditional formatting should be applicable to multiple ranges + #159 Force OpenXMLValidator to run under invariant culture + #158 Explicitly ignore custom sheet view elements. + #157 Fix maths / statistical functions + #156 Calling SaveAs fails with validation error + #155 Can't load an excel file: "An item with the same key has already been added." + #154 Shift page breaks + #153 Page breaks are not shifting + #152 Culture non invariant cause crash on save + #151 Error in ImportStream + #150 sheet.Evaluate("COUNTIF...... + #149 Update test for correctly testing time value as string + #148 Improve conditional formatting loading and saving + #147 When saving a document with cell, staring with apostrophe ( ' ), this symbol is trimmed question + #146 XlWorkbook NamedRanges do not include local names + #145 System.ApplicationException in ClosedXML + #144 exception: `System.IndexOutOfRangeException` + #143 UWP and Xamarin Forms support + #142 Use BuiltInId to determine default style + #141 Getting this exp "Specified argument was out of the range of valid values." while opening an excel file + #140 Workbook generated using closedxml, throwing error (Couldn't find 'xl/worksheets/sheet1.xml' ) while trying to read from other software + #139 Workbook Connection lost enhancement + #138 Release 0.85.0, Worksheet.PivotTables not detecting pivot tables + #137 Named constants throw exception. enhancement + #136 Save workbook exception bug + #135 Generated XLSX is invalid bug + #134 How I can copy range values without formulas? + #133 XLTable.FieldNames Dictionary doesn't Refresh Keys + #132 When a cell's text begins with a new line code and Japanese Kanji enhancement help wanted + #131 When an Id of a first sheet is 2 + #130 Why are all number types converted into double? + #129 Query Sheets help wanted question + #128 Pivot table case sensitivity problem with rowlabels + #127 Correctly save sheet Id and RelId + #126 Workbook loses fit to page settings on save + #125 Screws up references from second sheet to first sheet when first sheet is updated + #124 Implement loading pivot tables + #123 PivotTable case sensitivity problem with RowLabels + #122 PageSetup + #121 External link relationship in formulas enhancement + #120 CurrentRegion for IXLRange enhancement + #119 nuget ETA + #118 Catch implicit conversion that fails. + #117 Calculation failure in date cell + #116 Implement 'Visible' property on named ranges. + #115 Exception when calling SaveAs() + #114 PageSetup.Footer.Left is not filled with data from PageSetup.Footer + #113 Getting format exception and not getting proper value of a cell which shows properly on excel + #112 After the first 4 sheets, Border is assigned only to specific cells + #111 There is a phenomenon that the setting of Border does not apply. + #110 Copying sheet doesn't bring graphs over enhancement Hacktoberfest + #109 Don't match parts of formula between single quotes (i.e. sheet names) + #108 Fix regex for parsing cell formula. + #107 Copying cell with certain formula results in corrupt cell + #106 Defined Name Visibility + #105 Sort does not work properly when using Formula's + #104 Load sheet data with table with no rows correctly + #103 Additional Cell Formatting Options + #102 StackOverflowException due to long chain of formula dependencies + #101 Support .NET Standard enhancement Parked + #100 Multiple SaveAs calls causes InvalidCastException + #99 Pivot table improvements + #98 Theme colors + #97 Parse inline string with rich text correctly. + #96 More than one Value to Pivot table not working + #95 Setting thread culture so that tests pass on any machine + #94 Properly dispose workbook after tests are completed. + #93 Number formatting does not work + #92 number format + #91 Parsing of rich text inside inline string fails + #90 Copying a range will alter the worksheet names in a Formula + #89 checkboxes support + #88 Expose new Cells() function to iterate over cells, including unused cells inside range, but excluding unused cells outside range. enhancement + #87 Support for multiple pivot tables bug + #86 Large Files - Performance & Memory consumption bug + #85 Fix the pivot table support for multiple pivot tables. + #84 reading empty cell issue + #83 Please any one help me out to read blank cell using Closed XML. + #82 Reading value from empty cell + #81 Allow room for filter arrow when adjusting column widths automatically. bug Hacktoberfest + #80 Fix VLOOKUP and HLOOKUP when reference table is not at A1. Fixes #72. + #79 More double parse fixes bug Hacktoberfest + #78 Improve HasDuplicates + #77 Columns().AdjustToContents ignored AutoFilter + #76 Add custom attribute to specify column order of object exported. enhancement Hacktoberfest + #75 Excel functions enhancement Hacktoberfest + #74 Excel functions + #73 DocumentFormat.OpenXml nuget dependency duplicate + #72 Vlookup using wrong row numbers bug Hacktoberfest + #71 Fix date and time functions where negative days are involved. bug Hacktoberfest + #70 Formulas like FIND and COUNTIF get removed + #69 Implement all date and time functions bug Hacktoberfest + #68 Include nuget install command + #67 Cannot set horizontal alignment on merged cells + #66 NickNack2020's fix for invalid char enhancement Hacktoberfest + #65 Fix conditional formatting bug Hacktoberfest + #64 Remove shadow test Hacktoberfest + #63 Excel found unreadable content - strip invalid XML characters? Hacktoberfest + #62 Optionally validate the workbook using OpenXmlValidator when saving it. enhancement Hacktoberfest + #61 Problem with the conditional formatting + #60 Object Creation Validation + #59 Read or retrieve value from spreadsheet using existing rangenames + #58 Implement RightToLeft in sheet view. Fixes #53 . Hacktoberfest + #57 Issue55 load table with hidden header row Hacktoberfest + #56 Use globally defined number style to parse text to double. Especially… Hacktoberfest + #55 installed ClosedXml nuget from nuget manager but can't load an existing excel file Hacktoberfest + #54 Wrong bar proportions in DataBar bug Hacktoberfest + #53 Sheet->Right-to-Left does not work bug Hacktoberfest + #52 Implement all Excel functions Hacktoberfest + #51 Full pivot table support enhancement Hacktoberfest + #50 Charting support enhancement Hacktoberfest + #49 Query table support enhancement Hacktoberfest + #48 Image support enhancement Hacktoberfest + #47 Parse and convert to string using invariant culture + #46 Fix paths for Unix environments + #45 Allow Access to lower level xml + #44 Dont hardcode examples folders + #43 Correct set page header + #42 Can't set header on non empty header + #41 Fixed R1C1 regex bug + #40 Problem with R1C1 Regex + #39 "Pivot Tables Values Problem" bug Hacktoberfest + #38 Investigate "Unreadable content" Issue + #37 Codeplex pr8519 performance improvements when inserting rows + #36 cell.RichText.Text v/s cell.Value.Tostring() + #35 When setting cell value to RichText, don't use SetEnumerable. + #34 Clearing AutoFilter shouldn't throw an exception + #33 Implement VLOOKUP and HLOOKUP + #32 Remove Autofilter problem + #31 Align develop branch with master + #30 Support for lookup functions enhancement + #29 Update version to 0.80 + #28 Calculation properties + #27 Generate files in subfolders under executing assembly's folder. + #26 Clean up project files + #25 Fix XLColor equals method + #24 Suppress warning CS1591 + #23 Sort(3); does not work on sheets + #22 Remove ClosedXML_Sandbox_VB project + #21 Remove warnings + #20 Ignore packages folder (from NuGet) + #19 Remove ClosedXML_Package project. + #18 Text function fixes + #17 SetRichText(object value) + #16 fix "conditional format doesn't work when range has multiple conditional format" + #15 fix "conditional format doesn't work when range has multiple conditio… + #14 Data at root level is invalid, generating xlsx from linux with mono + #13 Add .editorconfig file + #12 Upgrade NUnit to version 3.4.1 enhancement + #11 Fix workbook properties custom datetime property + #10 Fix datetime bug with short date format + #9 Parse dates with current culture + #8 PROPER function handling + #7 Implement type safe XLTableTheme class + #6 Allow for custom themes in tables. Fixes Codeplex 9499 + #5 Check returned value is null when no worksheet was found. + #4 Delete obsolete files and folders. + #3 Fix number format id bug + #2 Preserve tables' column names when table is of type queryTable. Parked + #1 Delete pivotcache when deleting a sheet