Hey folks,
I am importing an html table, doing some formatting and then saving to xls format with some weird results.
(I could be doing something wrong.)
See code below: (The variable “Content” is a string consisting of the attached txt file contents.)
The code below works okay until I un-comment the last section, at this point my alphanumeric columns loose their leading zeroes. With it commented they are displayed correctly. Is the “dataStyle” overriding something? Why is this happening? Is there a workaround?
using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(Content)))
{
var loadOptions = new LoadOptions(LoadFormat.Html)
{
ConvertNumericData = false
};
var workbook = new Workbook(stream, loadOptions);<span style="color:#93c763;">var</span> sheet <span style="color:#e8e2b7;">=</span> workbook<span style="color:#e8e2b7;">.</span>Worksheets[<span style="color:#ec7600;">"Sheet1"</span>]; sheet<span style="color:#e8e2b7;">.</span>AutoFitColumns(); sheet<span style="color:#e8e2b7;">.</span>AutoFitRows(); sheet<span style="color:#e8e2b7;">.</span>DisplayZeros <span style="color:#e8e2b7;">=</span> <span style="color:#93c763;">true</span>; workbook<span style="color:#e8e2b7;">.</span>ChangePalette(<span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>FromArgb(<span style="color:#ffcd22;">238</span>, <span style="color:#ffcd22;">238</span>, <span style="color:#ffcd22;">238</span>), <span style="color:#ffcd22;">55</span>); <span style="color:#93c763;">var</span> headerStyle <span style="color:#e8e2b7;">=</span> workbook<span style="color:#e8e2b7;">.</span>Styles[workbook<span style="color:#e8e2b7;">.</span>Styles<span style="color:#e8e2b7;">.</span>Add()]; headerStyle<span style="color:#e8e2b7;">.</span>ForegroundColor <span style="color:#e8e2b7;">=</span> <span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>FromArgb(<span style="color:#ffcd22;">238</span>, <span style="color:#ffcd22;">238</span>, <span style="color:#ffcd22;">238</span>); headerStyle<span style="color:#e8e2b7;">.</span>Pattern <span style="color:#e8e2b7;">=</span> <span style="color:#678cb1;">BackgroundType</span><span style="color:#e8e2b7;">.</span>Solid; headerStyle<span style="color:#e8e2b7;">.</span>Font<span style="color:#e8e2b7;">.</span>IsBold <span style="color:#e8e2b7;">=</span> <span style="color:#93c763;">true</span>; headerStyle<span style="color:#e8e2b7;">.</span>SetBorder(<span style="color:#678cb1;">BorderType</span><span style="color:#e8e2b7;">.</span>TopBorder, <span style="color:#678cb1;">CellBorderType</span><span style="color:#e8e2b7;">.</span>Thin, <span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>Black); headerStyle<span style="color:#e8e2b7;">.</span>SetBorder(<span style="color:#678cb1;">BorderType</span><span style="color:#e8e2b7;">.</span>BottomBorder, <span style="color:#678cb1;">CellBorderType</span><span style="color:#e8e2b7;">.</span>Thin, <span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>Black); headerStyle<span style="color:#e8e2b7;">.</span>SetBorder(<span style="color:#678cb1;">BorderType</span><span style="color:#e8e2b7;">.</span>LeftBorder, <span style="color:#678cb1;">CellBorderType</span><span style="color:#e8e2b7;">.</span>Thin, <span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>Black); headerStyle<span style="color:#e8e2b7;">.</span>SetBorder(<span style="color:#678cb1;">BorderType</span><span style="color:#e8e2b7;">.</span>RightBorder, <span style="color:#678cb1;">CellBorderType</span><span style="color:#e8e2b7;">.</span>Thin, <span style="color:#678cb1;">Color</span><span style="color:#e8e2b7;">.</span>Black); headerStyle<span style="color:#e8e2b7;">.</span>HorizontalAlignment <span style="color:#e8e2b7;">=</span> <span style="color:#678cb1;">TextAlignmentType</span><span style="color:#e8e2b7;">.</span>Center; <span style="color:#93c763;">var</span> firstRow <span style="color:#e8e2b7;">=</span> sheet<span style="color:#e8e2b7;">.</span>Cells<span style="color:#e8e2b7;">.</span>CreateRange(<span style="color:#ec7600;">"A1"</span>, sheet<span style="color:#e8e2b7;">.</span>Cells<span style="color:#e8e2b7;">.</span>EndCellInRow(<span style="color:#ffcd22;">0</span>)<span style="color:#e8e2b7;">.</span>Name); firstRow<span style="color:#e8e2b7;">.</span>SetStyle(headerStyle); <span style="color:#66747b;">//var dataCells = sheet.Cells.CreateRange(1, 0, sheet.Cells.EndCellInColumn(0).Row, sheet.Cells.EndCellInRow(0).Column + 1);</span> <span style="color:#66747b;">//var dataStyle = workbook.Styles[workbook.Styles.Add()];</span> <span style="color:#66747b;">//dataStyle.SetBorder(BorderType.TopBorder, CellBorderType.Thin, Color.Black);</span> <span style="color:#66747b;">//dataStyle.SetBorder(BorderType.BottomBorder, CellBorderType.Thin, Color.Black);</span> <span style="color:#66747b;">//dataStyle.SetBorder(BorderType.LeftBorder, CellBorderType.Thin, Color.Black);</span> <span style="color:#66747b;">//dataStyle.SetBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Black);</span> <span style="color:#66747b;">//dataCells.SetStyle(dataStyle);</span> <span style="color:#93c763;">using</span> (<span style="color:#93c763;">var</span> ms <span style="color:#e8e2b7;">=</span> <span style="color:#93c763;">new</span> <span style="color:#678cb1;">MemoryStream</span>()) { workbook<span style="color:#e8e2b7;">.</span>Save(ms, <span style="color:#678cb1;">SaveFormat</span><span style="color:#e8e2b7;">.</span>Excel97To2003); ms<span style="color:#e8e2b7;">.</span>Position <span style="color:#e8e2b7;">=</span> <span style="color:#ffcd22;">0</span>; ms<span style="color:#e8e2b7;">.</span>WriteTo(context<span style="color:#e8e2b7;">.</span>HttpContext<span style="color:#e8e2b7;">.</span>Response<span style="color:#e8e2b7;">.</span>OutputStream); }
}