コード例 #1
0
        private void DoMapRowsToPropertiesWorkButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                LogMessage("I'm using RAW read service (ClassToExcelRawReaderService) to get data and then " +
                           "I'm using a converter (ClassToExcelRowConverter) to map rows to a class' properties.");
                LogMessage("Note that blank rows are skipped by OpenXml.");

                // Load the embedded Beverages.xlsx file.
                String someDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                string filePath      = Path.Combine(someDirectory, "Beverages.xlsx");
                if (File.Exists(filePath))
                {
                    LogMessage($"Loading data from {filePath}");
                    // Get tab names
                    List <string> worksheetNames = string.IsNullOrWhiteSpace(WorksheetNames.Text)
                        ? new List <string>()
                        : WorksheetNames.Text.Split(',').ToList();

                    if (worksheetNames.Count > 0)
                    {
                        var worksheetName = worksheetNames.First().Trim();

                        // Passing in LogServiceMessage in optional.  I'm using it here to help debug in issues while reading a file.
                        var rawReaderService = new ClassToExcelRawReaderService(LogServiceMessage);
                        List <ClassToExcelRawRow> rawRows = rawReaderService.ReadWorksheet(filePath, worksheetName);
                        if (rawRows.Count > 0)
                        {
                            // Rows 2-6 (Column C) have the Beverage class data
                            var      converter1 = new ClassToExcelRowConverter <Beverage>(LogServiceMessage);
                            Beverage beverage   = converter1.Convert(rawRows);
                            LogMessage(SerializationHelper.SerializeToXml(beverage));

                            // Rows 8-9 (Columns B & C) have the BeverageDates class data
                            var           converter2 = new ClassToExcelRowConverter <BeverageDates>(LogServiceMessage);
                            BeverageDates dates      = converter2.Convert(rawRows);
                            LogMessage(SerializationHelper.SerializeToXml(dates));
                        }
                        else
                        {
                            LogMessage("No data found.");
                        }
                    }
                    else
                    {
                        LogMessage("No work sheet (tab) names specified");
                    }
                }
                else
                {
                    LogMessage($"The file does not exists: {filePath}");
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
            }
        }
コード例 #2
0
        /// <summary>Reads everything as a string with no coversion at all.  Keep in mind that Excel does NOT require
        /// that BLANK cells be written so rows will not always have every column in their data!</summary>
        private void DoRawReadWorkButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                LogMessage("I'm using RAW read service (ClassToExcelRawReaderService) to get data and then dumping it directly out in the log.");
                LogMessage("Note that blank rows are skipped by OpenXml.");

                string filePath = FilePath.Text;
                if (File.Exists(filePath))
                {
                    LogMessage($"Loading data from {filePath}");

                    // Passing in LogServiceMessage in optional.  I'm using it here to help debug in issues while reading a file.
                    var rawReaderService = new ClassToExcelRawReaderService(LogServiceMessage);

                    // Get tab names
                    List <string> worksheetNames = string.IsNullOrWhiteSpace(WorksheetNames.Text)
                        ? new List <string>()
                        : WorksheetNames.Text.Split(',').ToList();

                    if (worksheetNames.Count > 0)
                    {
                        foreach (string worksheetName in worksheetNames)
                        {
                            List <ClassToExcelRawRow> rawRows = rawReaderService.ReadWorksheet(filePath, worksheetName.Trim());
                            if (rawRows.Count > 0)
                            {
                                LogMessage($"Work sheet name: {worksheetName}");

                                foreach (var row in rawRows)
                                {
                                    StringBuilder sb = new StringBuilder();
                                    sb.AppendFormat("Row: {0} --> ", row.RowNumber);
                                    foreach (var column in row.Columns)
                                    {
                                        sb.AppendFormat("[Column: {0} Data: {1}]", column.ColumnLetter, column.Data);
                                    }
                                    LogMessage(sb.ToString());
                                }
                            }
                            else
                            {
                                LogMessage($"No data found on work sheet named: {worksheetName}");
                            }

                            LogMessage("----------------------------------");
                        }
                    }
                    else
                    {
                        LogMessage("No work sheet (tab) names specified.");
                    }
                }
                else
                {
                    LogMessage($"The file does not exists: {filePath}");
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
            }
        }