Browse Source

Fixes

Still not passing test
pull/1181/head
ABykiev 2 years ago
parent
commit
2eec9d3359
  1. 6
      OpenXmlFormats/Spreadsheet/Sheet.cs
  2. 15
      ooxml/XSSF/UserModel/XSSFSheet.cs
  3. 2
      openxml4Net/Util/XmlHelper.cs
  4. 2
      testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs

6
OpenXmlFormats/Spreadsheet/Sheet.cs

@ -2469,7 +2469,7 @@ namespace NPOI.OpenXmlFormats.Spreadsheet
private double dyDescentField;
public CT_SheetFormatPr()
{
this.defaultColWidth = 8;
this.defaultColWidth = 8.43;
}
[XmlAttribute]
public uint baseColWidth
@ -2485,7 +2485,7 @@ namespace NPOI.OpenXmlFormats.Spreadsheet
}
[XmlAttribute]
[DefaultValue(typeof(uint), "8")]
[DefaultValue(typeof(double), "8.43")]
public double defaultColWidth
{
get
@ -2600,7 +2600,7 @@ namespace NPOI.OpenXmlFormats.Spreadsheet
return null;
CT_SheetFormatPr ctObj = new CT_SheetFormatPr();
ctObj.baseColWidth = XmlHelper.ReadUInt(node.Attributes["baseColWidth"]);
ctObj.defaultColWidth = XmlHelper.ReadDouble(node.Attributes["defaultColWidth"], 8);
ctObj.defaultColWidth = XmlHelper.ReadDouble(node.Attributes["defaultColWidth"], 8.43);
ctObj.defaultRowHeight = XmlHelper.ReadDouble(node.Attributes["defaultRowHeight"]);
ctObj.customHeight = XmlHelper.ReadBool(node.Attributes["customHeight"]);
ctObj.zeroHeight = XmlHelper.ReadBool(node.Attributes["zeroHeight"]);

15
ooxml/XSSF/UserModel/XSSFSheet.cs

@ -152,7 +152,7 @@ namespace NPOI.XSSF.UserModel
get
{
CT_SheetFormatPr pr = worksheet.sheetFormatPr;
return pr == null ? 8 : pr.defaultColWidth;
return pr == null ? 8.43 : pr.defaultColWidth;
}
set
{
@ -5960,12 +5960,7 @@ namespace NPOI.XSSF.UserModel
double fontwidth;
double width_px;
var width = worksheet.sheetFormatPr.defaultColWidth; //string length with padding
if (width != 0.0)
{
width_px = width * MaximumDigitWidth;
}
else
if (worksheet.sheetFormatPr.baseColWidth != 0.0)
{
double MDW = MaximumDigitWidth;
var length = worksheet.sheetFormatPr.baseColWidth; //string length with out padding
@ -5973,6 +5968,12 @@ namespace NPOI.XSSF.UserModel
double tmp = 256 * fontwidth + Math.Truncate(128 / MDW);
width_px = Math.Truncate((tmp / 256) * MDW) + 3; // +3 ???
}
else
{
var width = worksheet.sheetFormatPr.defaultColWidth; //string length with padding
width_px = width * MaximumDigitWidth;
}
return width_px;
}

2
openxml4Net/Util/XmlHelper.cs

@ -170,7 +170,7 @@ namespace NPOI.OpenXml4Net.Util
{
return ReadBool(attr, false);
}
public static double ReadDouble(XmlAttribute attr, uint defaultValue)
public static double ReadDouble(XmlAttribute attr, double defaultValue)
{
if (attr == null)
return defaultValue;

2
testcases/ooxml/XSSF/UserModel/TestXSSFSheet.cs

@ -2133,7 +2133,7 @@ namespace TestCases.XSSF.UserModel
var cell = row.CreateCell(0);
Assert.AreEqual(sheet.GetColumnWidth(0) / 256, sheet.DefaultColumnWidth);
Assert.AreEqual(sheet.DefaultColumnWidth, 8);
Assert.AreEqual(sheet.DefaultColumnWidth, 8.43);
sheet.DefaultColumnWidth = 50.1;
Assert.AreEqual(sheet.GetColumnWidth(0) / 256, sheet.DefaultColumnWidth);

Loading…
Cancel
Save