public SpreadsheetRangeData(IComponentValueStore valueStore, SpreadsheetComponentData spreadsheet, string startId, string endId)
     : base(valueStore)
 {
     this.spreadsheet = spreadsheet;
     this.startId     = startId;
     this.endId       = endId;
 }
Exemple #2
0
        static public void ExportToXLSX(SpreadsheetComponentData spreadsheet, string path)
        {
            CultureInfo cc = Thread.CurrentThread.CurrentCulture, cuc = Thread.CurrentThread.CurrentUICulture;
            CultureInfo ci = new CultureInfo("en-US");

            Thread.CurrentThread.CurrentCulture   = ci;
            Thread.CurrentThread.CurrentUICulture = ci;

            XSSFWorkbook wb = new XSSFWorkbook();
            XSSFSheet    sh = (XSSFSheet)wb.CreateSheet("Sheet1");

            // column header
            var headerFont = wb.CreateFont();

            headerFont.Boldweight = (short)FontBoldWeight.Bold;
            var headerStyle = wb.CreateCellStyle();

            headerStyle.SetFont(headerFont);
            bool hasHeader = false;

            if (spreadsheet.HasCustomLabeledColumnHeader())
            {
                var r = sh.CreateRow(0);
                for (int col = 0; col < spreadsheet.columnDatas.Count; ++col)
                {
                    var cell = r.CreateCell(col);
                    cell.CellStyle = headerStyle;
                    cell.SetCellValue(spreadsheet.columnDatas[col].HasCustomLabel() ? spreadsheet.columnDatas[col].label : SpreadsheetComponentData.GetDefaultColumnName(col));
                }
                hasHeader = true;
            }

            for (int row = 0; row < spreadsheet.rowDatas.Count; ++row)
            {
                var r = sh.CreateRow(row + (hasHeader ? 1 : 0));
                for (int col = 0; col < spreadsheet.columnDatas.Count; ++col)
                {
                    var cell = r.CreateCell(col);
                    SetCellValue(cell, spreadsheet.cells[row][col]);
                }
            }
            try
            {
                using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write))
                {
                    wb.Write(fs);
                }
            }
            catch (Exception e)
            {
                throw new Exception("Cannot write to Excel file. Another program might be using it.");
            }
            finally
            {
                Thread.CurrentThread.CurrentCulture   = cc;
                Thread.CurrentThread.CurrentUICulture = cuc;
            }
        }