Skip to content

Commit

Permalink
Fixed issue JanKallman#167-ZipPackage with backslash and JanKallman#173
Browse files Browse the repository at this point in the history
… Range.Text crashes if numberformat don't exist
  • Loading branch information
JanKallman committed Apr 3, 2018
1 parent 291741b commit 8ab7d73
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
4 changes: 4 additions & 0 deletions EPPlus/ExcelRangeBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -997,6 +997,10 @@ private string GetFormattedText(bool forWidthCalc)
break;
}
}
if(nf==null)
{
nf = styles.NumberFormats[0].FormatTranslator; //nf should never be null. If so set to General, Issue 173
}

string format, textFormat;
if (forWidthCalc)
Expand Down
19 changes: 14 additions & 5 deletions EPPlus/Packaging/ZipPackage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ public ContentType(string name, bool isExtension, string match)
}
Dictionary<string, ZipPackagePart> Parts = new Dictionary<string, ZipPackagePart>(StringComparer.OrdinalIgnoreCase);
internal Dictionary<string, ContentType> _contentTypes = new Dictionary<string, ContentType>(StringComparer.OrdinalIgnoreCase);
internal char _dirSeparator='/';
internal ZipPackage()
{
AddNew();
Expand All @@ -97,7 +98,15 @@ internal ZipPackage(Stream stream)
stream.Seek(0, SeekOrigin.Begin);
using (ZipInputStream zip = new ZipInputStream(stream))
{
var e = zip.GetNextEntry();
var e = zip.GetNextEntry();
if (e.FileName.Contains("\\"))
{
_dirSeparator = '\\';
}
else
{
_dirSeparator = '/';
}
while (e != null)
{
if (e.UncompressedSize > 0)
Expand All @@ -109,7 +118,7 @@ internal ZipPackage(Stream stream)
AddContentTypes(Encoding.UTF8.GetString(b));
hasContentTypeXml = true;
}
else if (e.FileName.Equals("_rels/.rels", StringComparison.OrdinalIgnoreCase))
else if (e.FileName.Equals($"_rels{_dirSeparator}.rels", StringComparison.OrdinalIgnoreCase))
{
ReadRelation(Encoding.UTF8.GetString(b), "");
}
Expand Down Expand Up @@ -217,10 +226,10 @@ internal ZipPackagePart GetPart(Uri partUri)

internal string GetUriKey(string uri)
{
string ret = uri;
string ret = uri.Replace('\\', '/');
if (ret[0] != '/')
{
ret = "/" + ret;
ret = '/' + ret;
}
return ret;
}
Expand Down Expand Up @@ -269,7 +278,7 @@ internal void Save(Stream stream)
byte[] b = enc.GetBytes(GetContentTypeXml());
os.Write(b, 0, b.Length);
/**** Top Rels ****/
_rels.WriteZip(os, "_rels\\.rels");
_rels.WriteZip(os, $"_rels/.rels");
ZipPackagePart ssPart=null;
foreach(var part in Parts.Values)
{
Expand Down
24 changes: 21 additions & 3 deletions EPPlusTest/Issues.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1894,7 +1894,7 @@ public void Issue70()
workbook.SaveAs(new FileInfo(outputPath));
}
}

[TestMethod, Ignore]
public void Issue100()
{
Expand Down Expand Up @@ -1953,7 +1953,7 @@ public void Issue107()
epIN.Workbook.Worksheets.Add(epIN.Workbook.Worksheets[2].Name + "-2", epIN.Workbook.Worksheets[2]);
epOUT.Save();
epIN.SaveAs(new FileInfo(@"C:\temp\bug\pivotbug107-SameWB.xlsx"));
}
}
}
[TestMethod]
public void Issue127()
Expand All @@ -1964,7 +1964,16 @@ public void Issue127()
p.SaveAs(new FileInfo(@"C:\temp\bug\PivotTableTestCaseSaved.xlsx"));
}
}
[TestMethod]
[TestMethod, Ignore]
public void Issue167()
{
using (var p = new ExcelPackage(new FileInfo(@"C:\temp\bug\test-Errorworkbook.xlsx")))
{
Assert.AreEqual(p.Workbook.Worksheets.Count, 1);
p.SaveAs(new FileInfo(@"C:\temp\bug\test-ErrorworkbookSaved.xlsx"));
}
}
[TestMethod, Ignore]
public void Issue155()
{
using (var pck = new ExcelPackage())
Expand All @@ -1977,6 +1986,15 @@ public void Issue155()
string path = @"C:\temp\test.xlsx";
File.WriteAllBytes(path, data);
}
}
[TestMethod, Ignore]
public void Issue173()
{
using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo($@"C:\temp\bug\issue173.xlsx")))
{
ExcelWorksheet ws = xlPackage.Workbook.Worksheets.First();
var r = ws.Cells["A4"].Text;
}
}
}
}

0 comments on commit 8ab7d73

Please sign in to comment.