Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private string ConvertToXSLX(string path)
- {
- using (var fs = File.OpenRead(path))
- {
- var result = XLS_to_XLSX_Converter.Convert(fs);
- // (file.xls) + x = file.xlsx
- path = $"{path}x";
- using (var fs2 = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
- {
- fs2.Write(result, 0, result.Length);
- }
- }
- return path;
- }
- public static byte[] Convert(Stream sourceStream)
- {
- var source = new HSSFWorkbook(sourceStream);
- var destination = new XSSFWorkbook();
- for (int i = 0; i < source.NumberOfSheets; i++)
- {
- var hssfSheet = (HSSFSheet)source.GetSheetAt(i);
- var xssfSheet = (XSSFSheet)destination.CreateSheet(source.GetSheetAt(i).SheetName);
- CopyRows(hssfSheet, xssfSheet);
- }
- using (var ms = new MemoryStream())
- {
- destination.Write(ms);
- return ms.ToArray();
- }
- }
- private static void CopyRows(HSSFSheet hssfSheet, XSSFSheet destination)
- {
- for (int i = 0; i < hssfSheet.PhysicalNumberOfRows; i++)
- {
- destination.CreateRow(i);
- var cells = hssfSheet.GetRow(i)?.Cells ?? new List<ICell>();
- for (int j = 0; j < cells.Count; j++)
- {
- var row = destination.GetRow(i);
- row.CreateCell(j);
- CopyCell((HSSFCell)cells[j], (XSSFCell)row.Cells[j]);
- }
- }
- }
- private static void CopyCell(HSSFCell oldCell, XSSFCell newCell)
- {
- CopyCellValue(oldCell, newCell);
- }
- private static void CopyCellValue(HSSFCell oldCell, XSSFCell newCell)
- {
- switch (oldCell.CellType)
- {
- case CellType.String:
- newCell.SetCellValue(oldCell.StringCellValue);
- break;
- case CellType.Numeric:
- newCell.SetCellValue(oldCell.NumericCellValue);
- break;
- case CellType.Blank:
- newCell.SetCellType(CellType.Blank);
- break;
- case CellType.Boolean:
- newCell.SetCellValue(oldCell.BooleanCellValue);
- break;
- case CellType.Error:
- newCell.SetCellErrorValue(oldCell.ErrorCellValue);
- break;
- default:
- break;
- }
- }
Add Comment
Please, Sign In to add comment