A Xlsx to Html file converter and parser. Support cell fills, fonts, borders, alignments, and other styles. Support cell sizes and merged cells. Support custom number formats and basic conditional formats. Support multiple sheets and hidden sheets. Support embedded pictures. Support progress callbacks. Only depend on the Microsoft Open Xml SDK.
DocumentFormat.OpenXml ≥ 2.7.1
- Cell fills, fonts, borders, alignments, and other styles
- Custom column widths and row heights
- Vertical and horizontal merged cells
- Number formats and basic conditional formats
- Sheet tab titles, colors, and hidden sheets
- Picture embeddings as Base64 images
- Conversion progress callback
Only one line to convert a Xlsx file to Html with the use of Stream
.
XlsxToHtmlConverter.Converter.ConvertXlsx(inputStream, outputStream);
Or to convert with specific ConverterConfig
and progress callback.
XlsxToHtmlConverter.Converter.ConvertXlsx(inputStream, outputStream, config, progressCallback);
Just use a string
of the path to the file instead of a Stream
to convert a local Xlsx file.
string filename = @"C:\path\to\file.xlsx";
XlsxToHtmlConverter.Converter.ConvertXlsx(filename, outputStream);
A third optional parameter can be set to decide whether to use MemoryStream
or FileStream
. When set to false
, it uses a FileStream
to read the file instead of loading the entire file into a MemoryStream
at once, effectively reducing the memory usage for larger files but at the cost of slowing down the conversion significantly.
XlsxToHtmlConverter.Converter.ConvertXlsx(filename, outputStream, false);
ConverterConfig
include flexible and customizable conversion configurations.
In cases where the converter is unable to produce the correct stylings, it is suggested to set
ConvertStyles
tofalse
, which will ensure the conversion of all the content with default stylings.
XlsxToHtmlConverter.ConverterConfig config = new XlsxToHtmlConverter.ConverterConfig()
{
PageTitle = "My Title",
PresetStyles = XlsxToHtmlConverter.ConverterConfig.DefaultPresetStyles + "body { background-color: skyblue; } table { width: 100%; }",
ErrorMessage = "An unhandled error occured during the conversion: {EXCEPTION}",
Encoding = System.Text.Encoding.UTF8,
BufferSize = 65536,
ConvertStyles = true,
ConvertSizes = true,
ConvertNumberFormats = true,
ConvertPictures = true,
ConvertSheetTitles = true,
ConvertHiddenSheets = false,
ConvertFirstSheetOnly = false,
ConvertHtmlBodyOnly = false,
RoundingDigits = 2
};
A progress callback event can be set up with ConverterProgressCallbackEventArgs
, where things like ProgressPercent
can be used.
EventHandler<XlsxToHtmlConverter.ConverterProgressCallbackEventArgs> progressCallback = ConverterProgressCallback;
private static void ConverterProgressCallback(object sender, XlsxToHtmlConverter.ConverterProgressCallbackEventArgs e)
{
string info = string.Format("{0:##0.00}% (Sheet {1} of {2} | Row {3} of {4})", e.ProgressPercent, e.CurrentSheet, e.TotalSheets, e.CurrentRow, e.TotalRows);
string progress = new string('█', (int)(e.ProgressPercent / 2)) + new string('░', (int)((100 - e.ProgressPercent) / 2));
Console.WriteLine(info + new string(' ', 5) + progress);
}
This project is under the MIT License.