当我使用EPPlus自动调整格式化为日期字符串的列时,自动调整机制使用未格式化的字符串作为列的宽度的度量。
这是一个错误还是我做错了什么?
代码
sheet.Column(2).Style.Numberformat.Format = "yyyy-MM-dd hh:mm";
sheet.Cells.AutoFitColumns();
结果:
在excel中扩展第二列
使用无格式自动调整,请注意第二列的宽度与第一张图片中假定自动调整列的宽度相同。
完成后,这是没有使用自动调整时的结果
答案 0 :(得分:1)
可以是您的代码中的字体设置,也可以是excel中的全局字体设置。尝试运行此测试(我将其作为答案发布,因为我无法将其放入评论中):
[TestMethod]
public void Auto_Col_Fomat_Test()
{
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[]
{
new DataColumn("Col1", typeof (int)), new DataColumn("Col2", typeof (DateTime)), new DataColumn("Col3", typeof (object))
});
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow();
row[0] = i; row[1] = DateTime.Now.AddDays(i); row[2] = Path.GetRandomFileName();
datatable.Rows.Add(row);
}
//Create a test file
var fi = new FileInfo(@"c:\temp\Auto_Col_Fomat.xlsx");
if (fi.Exists)
fi.Delete();
using (var pck = new ExcelPackage(fi))
{
var workbook = pck.Workbook;
var sheet = workbook.Worksheets.Add("Sheet1");
sheet.Cells.LoadFromDataTable(datatable, true);
sheet.Column(2).Style.Numberformat.Format = "yyyy-MM-dd hh:mm";
sheet.Cells.AutoFitColumns();
pck.Save();
}
}
如果显示相同的内容,您可能更改了默认的Excel格式或缩放,这意味着您可能需要将代码中的字体设置为Body Font
大小为11(至少是2013年使用的)。如果它没有显示你的更多代码。
答案 1 :(得分:0)
我遇到了同样的问题。
这是我的工作:
首先调用AutoFitColumns,然后在具有特殊格式的列中添加一些填充:
<div class="control-group">
<div class="controls">
<label for="foo">Foo</label> <-- why this did not go?
<input id="foo" name="foo" type="hidden">
</div>
</div>