Как искать, а затем выбрать конкретную строку из Excel в C #? - PullRequest
0 голосов
/ 31 марта 2019

Это может быть простой и повторяющийся вопрос, но я новичок в Interop.Excel.Я использую Excel в качестве базы данных.У меня есть эта функция для вставки новой строки в мой существующий файл

public static string filePath = @"new.xlsx";
private static void AddNewRowsToExcelFile()
        {
            IList<Employee> empList = new List<Employee>() {
        new Employee(){Card_ID=1003, Counter_ID=2, Scanner_ID=3, Ip="192.168.2.76"}
    };

            Excel.Application xlApp = new Excel.Application();

            Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", false,
                Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
            Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            Excel.Range xlRange = xlWorkSheet.UsedRange;
            int rowNumber = xlRange.Rows.Count + 1;

            foreach (Employee emp in empList)
            {
                xlWorkSheet.Cells[rowNumber, 1] = emp.Counter_ID;
                xlWorkSheet.Cells[rowNumber, 2] = emp.Card_ID;
                xlWorkSheet.Cells[rowNumber, 3] = emp.Scanner_ID;
                xlWorkSheet.Cells[rowNumber, 4] = emp.Ip;
                rowNumber++;
            }

            // Disable file override confirmaton message  
            xlApp.DisplayAlerts = false;
            xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook,
                Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange,
                Excel.XlSaveConflictResolution.xlLocalSessionChanges, Missing.Value, Missing.Value,
                Missing.Value, Missing.Value);
            xlWorkBook.Close();
            xlApp.Quit();

            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(xlApp);

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.WriteLine("\nRecords Added successfully...");
            Console.BackgroundColor = ConsoleColor.Black;
        }
        public class Employee
        {
            public int Card_ID { get; set; }
            public int Counter_ID { get; set; }
            public int Scanner_ID { get; set; }
            public string Ip { get; set; }
        }

А вот функция для чтения файла Excel

private static void ReadExcelFile()
        {
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.WriteLine("\nReading the Excel File...");
            Console.BackgroundColor = ConsoleColor.Black;

            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath);
            Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

            Excel.Range xlRange = xlWorkSheet.UsedRange;
            int totalRows = xlRange.Rows.Count;
            int totalColumns = xlRange.Columns.Count;

            string firstValue, secondValue, ThirdValue, FourthValue;

            for (int rowCount = 1; rowCount <= totalRows; rowCount++)
            {

                firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text);
                secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text);
                ThirdValue = Convert.ToString((xlRange.Cells[rowCount, 3] as Excel.Range).Text);
                FourthValue = Convert.ToString((xlRange.Cells[rowCount, 4] as Excel.Range).Text);


                Console.WriteLine(firstValue + "\t" + secondValue + "\t" + ThirdValue + "\t" + FourthValue);

            }

            xlWorkBook.Close();
            xlApp.Quit();

            Marshal.ReleaseComObject(xlWorkSheet);
            Marshal.ReleaseComObject(xlWorkBook);
            Marshal.ReleaseComObject(xlApp);

            Console.WriteLine("End of the file...");

        }

Это простая функция, где я имею дело с Hard-Код данных (для целей обучения)

Теперь я хочу знать, как искать с определенной ячейкой столбца, а затем получить эту строку из Excel?Спасибо

1 Ответ

0 голосов
/ 31 марта 2019

Если вы просто хотите читать без индекса, вы можете передать имя столбца, например:

xlRange.Cells[rowCount, "B"] as Excel.Range

но если вы хотите использовать синтаксис sql, взгляните на эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...