public ExcelReader(string fileToOpen, bool header, bool imex)
        {
            if (string.IsNullOrEmpty(fileToOpen))
            {
                throw new ArgumentNullException("filename", "filename cannot be null or empty");
            }
            FileInfo info = new FileInfo(fileToOpen);

            if (!info.Exists)
            {
                throw new FileNotFoundException("fileName must exist", fileToOpen);
            }
            if (!info.Extension.EndsWith(".xls", StringComparison.OrdinalIgnoreCase) && !info.Extension.EndsWith(".xlsx"))
            {
                throw new InvalidOperationException("The excel file must be an xls or xlsx");
            }
            if (info.Extension.EndsWith(".xls"))
            {
                this.excelType = WorkbookType.XLS;
            }
            else
            {
                this.excelType = WorkbookType.XLSX;
            }
            this.fileName = fileToOpen;
            this.header   = header;
            this.imex     = imex;
        }
 public ExcelReader(string fileToOpen, bool header, bool imex)
 {
     if (string.IsNullOrEmpty(fileToOpen)) throw new ArgumentNullException("filename", "filename cannot be null or empty");
     FileInfo info = new FileInfo(fileToOpen);
     if (!info.Exists) throw new FileNotFoundException("fileName must exist", fileToOpen);
     if (!info.Extension.EndsWith(".xls", StringComparison.OrdinalIgnoreCase) && !info.Extension.EndsWith(".xlsx")) throw new InvalidOperationException("The excel file must be an xls or xlsx");
     if (info.Extension.EndsWith(".xls")) this.excelType = WorkbookType.XLS;
     else this.excelType = WorkbookType.XLSX;
     this.fileName = fileToOpen;
     this.header = header;
     this.imex = imex;
 }
示例#3
0
        private string GetCellValueFromSheet(string filePath, WorkbookType sheetName, string cellReference)
        {
            using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                var workbook = WorkbookFactory.Create(file);

                var sheet   = workbook.GetSheet(sheetName.ToString());
                var cellRef = new CellReference(cellReference);

                return(GetCellValueAsString(sheet.GetRow(cellRef.Row).GetCell(cellRef.Col)));
            }
        }
示例#4
0
        private void ProcessSingleSheet(string directoryPath, ISheet targetSheet, WorkbookType workbookType)
        {
            var filePath = Path.Combine(directoryPath, workbooksInfo[workbookType].FileName);

            targetSheet.ForceFormulaRecalculation = false;

            using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                var wb          = WorkbookFactory.Create(file);
                var sourceSheet = wb.GetSheetAt(0);

                //get data from source sheet
                var sourceRange  = CellRangeAddress.ValueOf(sourceWorksheetsRanges[workbookType]);
                var sourceValues = Enumerable.Range(sourceRange.FirstRow, sourceRange.LastRow - sourceRange.FirstRow + 1)
                                   .Select(i => new
                {
                    Aop   = sourceSheet.GetRow(i).GetCell(sourceRange.FirstColumn)?.StringCellValue,
                    Value = GetCellValueAsString(sourceSheet.GetRow(i).GetCell(sourceRange.LastColumn))
                })
                                   .Where(m => !string.IsNullOrEmpty(m.Aop))
                                   .Where(m => int.TryParse(m.Aop, out int _))
                                   .ToDictionary(c => c.Aop, c => c.Value);

                //set data on target sheet (of final GFI)
                var targetRange = CellRangeAddress.ValueOf(workbooksInfo[workbookType].Range);
                for (int rowIndex = targetRange.FirstRow; rowIndex <= targetRange.LastRow; rowIndex++)
                {
                    if (targetSheet.GetRow(rowIndex).GetCell(targetRange.LastColumn).CellStyle.IsLocked)
                    {
                        continue;
                    }

                    var aopDouble = targetSheet.GetRow(rowIndex).GetCell(targetRange.FirstColumn).NumericCellValue;
                    var aop       = Convert.ToInt32(aopDouble).ToString("D3");

                    var aopValue = sourceValues.TryGetValue(aop, out string value) ? value : null;
                    var newValue = string.IsNullOrEmpty(aopValue) ? 0 : Convert.ToInt32(aopValue);

                    targetSheet.GetRow(rowIndex).GetCell(targetRange.LastColumn).SetCellValue(newValue);
                }
            }

            targetSheet.ForceFormulaRecalculation = true;
        }
示例#5
0
 /// <remarks/>
 public void GetWorkbookAsync(string sessionId, WorkbookType workbookType, object userState) {
     if ((this.GetWorkbookOperationCompleted == null)) {
         this.GetWorkbookOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWorkbookOperationCompleted);
     }
     this.InvokeAsync("GetWorkbook", new object[] {
                 sessionId,
                 workbookType}, this.GetWorkbookOperationCompleted, userState);
 }
示例#6
0
 /// <remarks/>
 public void GetWorkbookAsync(string sessionId, WorkbookType workbookType) {
     this.GetWorkbookAsync(sessionId, workbookType, null);
 }
示例#7
0
 public byte[] GetWorkbook(string sessionId, WorkbookType workbookType, out Status[] status) {
     object[] results = this.Invoke("GetWorkbook", new object[] {
                 sessionId,
                 workbookType});
     status = ((Status[])(results[1]));
     return ((byte[])(results[0]));
 }
示例#8
0
        /// <summary>
        /// It extracts blank DES workbook from resource file and saves it as specified file name.
        /// </summary>
        /// <param name="fileNameWpath">Desired file name of workbook.</param>
        internal static void GetWorkbookFromResourceFile(WorkbookType workbookType, string fileNameWpath)
        {
            byte[] workbookBytes = null;
            try
            {
                if (File.Exists(fileNameWpath))
                {
                    File.Delete(fileNameWpath);
                }
                //Load the resource file

                ResourceManager rm = new ResourceManager("DevInfo.Lib.DI_LibBAL.Export.ExportR", Assembly.GetExecutingAssembly());
                switch (workbookType)
                {
                    case WorkbookType.DataEntrySpreadsheet:
                        workbookBytes = (byte[])rm.GetObject("DataEntrySpreadsheet");
                        break;
                    case WorkbookType.IndicatorEntrySpreadsheet:
                        workbookBytes = (byte[])rm.GetObject("Indicator");
                        break;
                    case WorkbookType.AreaEntrySpreadsheet:
                       workbookBytes = (byte[])rm.GetObject("Area");
                        break;
                    case WorkbookType.General:
                        workbookBytes = (byte[])rm.GetObject("General");
                        break;
                }

                FileStream fileStream = File.Create(fileNameWpath);
                fileStream.Write(workbookBytes, 0, workbookBytes.Length);
                fileStream.Close();

            }
            catch (Exception ex)
            {
                //TODO: exception message?
                ExceptionHandler.ExceptionFacade.ThrowException(ex);
            }
        }
示例#9
0
        private List <string> ProccessSingleSheet(List <string> targetCells, string filePath, WorkbookType sheetName)
        {
            using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                var workbook = WorkbookFactory.Create(file);

                var sheet = workbook.GetSheet(sheetName.ToString());

                return(targetCells
                       .Select(c => new CellReference(c))
                       .Select(c => GetCellValueAsString(sheet.GetRow(c.Row).GetCell(c.Col)))
                       .ToList());


                //var noteStart = new CellReference(noteStartCell);
                //var valueStart = new CellReference(valueStartCell);

                //var noteColumnIndex = noteStart.Col;
                //var valueColumnIndex = valueStart.Col;

                //var startRow = noteStart.Row;
                //var valuesList = new List<string>();

                //HSSFFormulaEvaluator formula = new HSSFFormulaEvaluator(workbook);

                //for (int i = 0; i < sheet.LastRowNum - startRow; i++)
                //{
                //    var currentRow = sheet.GetRow(startRow + i);

                //    var currentCellValue = currentRow.GetCell(noteColumnIndex)?.StringCellValue;
                //    if (string.IsNullOrWhiteSpace(currentCellValue)) continue;

                //    var cell = currentRow.GetCell(valueColumnIndex);
                //    formula.EvaluateInCell(cell);

                //    var value = cell.NumericCellValue.ToString();
                //    valuesList.Add(value);
                //}

                //return valuesList;
            }
        }
 private void ViewCode(WorkbookType type, string codes)
 {
     switch(type)
     {
         case WorkbookType.Source:
             txtSourceCode.Text = codes;
             rTxtSelectedModuleCode.Text = codes;
             break;
         case WorkbookType.Destination:
             txtDestinationCode.Text = codes;
             break;
     }
 }
 private void DesableMenu(WorkbookType type)
 {
     switch (type)
     {
         case WorkbookType.Source:
             ListeSourceCodeMenuItem.Enabled = false;
             ExportSourceCodesMenuItem.Enabled = false;
             closeSourceMenuItem.Enabled = false;
             break;
         case WorkbookType.Destination:
             ListDestinationCodeMenuItem.Enabled = false;
             ExportDestinationCodesMenuItem.Enabled = false;
             closeDestinationMenuItem.Enabled = false;
             break;
     }
 }
 private void ClearViewCode(WorkbookType type)
 {
     switch (type)
     {
         case WorkbookType.Source:
             txtSourceCode.Text = string.Empty;
             rTxtSelectedModuleCode.Text = string.Empty;
             tvSourceListCodes.Nodes.Clear();
             tvVBASolution.Nodes.Clear();
             break;
         case WorkbookType.Destination:
             txtDestinationCode.Text = string.Empty;
             tvDestinationListCodes.Nodes.Clear();
             break;
     }
 }