Какой лучший способ запустить регулярное выражение для файла MS Excel в C #? - PullRequest
1 голос
/ 10 марта 2012

Я пытаюсь прочитать документ MS Office Excel, чтобы я мог проверить группу регулярных выражений по нему.У меня есть кое-что, что работает, но это кажется невероятно неуклюжим.Проверяю каждую клетку .... Я просто не могу представить, что это лучший способ.Любые предложения, чтобы сделать это лучше.

    static void ReadMSOfficeExcelFile(string file) {
        try {
            Microsoft.Office.Interop.Excel.Application xlsApp = new Microsoft.Office.Interop.Excel.Application();
            object nullobj = System.Reflection.Missing.Value;
            object ofalse = false;
            object ofile = file;

            Microsoft.Office.Interop.Excel.Workbook xlsWorkbook = xlsApp.Workbooks.Open(
                                                             file, nullobj, nullobj,
                                                             nullobj, nullobj, nullobj,
                                                             nullobj, nullobj, nullobj,
                                                             nullobj, nullobj, nullobj,
                                                             nullobj, nullobj, nullobj);

            Microsoft.Office.Interop.Excel.Sheets xlsSheets = xlsWorkbook.Worksheets;

            foreach (Microsoft.Office.Interop.Excel.Worksheet xlsWorkSheet in xlsWorkbook.Sheets) {
                Microsoft.Office.Interop.Excel.Range xlsRange = xlsWorkSheet.UsedRange;
                foreach (Microsoft.Office.Interop.Excel.Range xlsRow in xlsRange.Rows) {
                    foreach (Microsoft.Office.Interop.Excel.Range xlsCell in xlsRow.Columns) {
                        CheckLineMatch(file, xlsCell.Text.ToString());
                    }
                }
            }
            xlsWorkbook.Close(ofalse, nullobj, nullobj);
        }
        catch {
            PrintError("Unable to parse file because of MS Office error.", file);
        }
    }

Ответы [ 3 ]

0 голосов
/ 12 марта 2012

Я продолжал смотреть на этот другой пост. Я заметил пост, который читает:

""» Как насчет Excel Data Reader?

http://exceldatareader.codeplex.com/

Я использовал гнев в производственной среде для извлечения больших объемов данных из различных файлов Excel в SQL Server Compact. Это работает очень хорошо, и это довольно надежно. "" "

Все получилось очень хорошо для того, что мне нужно.

    static void ReadMSOffice2003ExcelFile(string file) {
        FileStream stream = File.Open(file, FileMode.Open, FileAccess.Read);
        ReadMSOfficeExcelFile(file, ExcelReaderFactory.CreateBinaryReader(stream));
    }


    static void ReadMSOffice2007ExcelFile(string file) {
        FileStream stream = File.Open(file, FileMode.Open, FileAccess.Read);
        ReadMSOfficeExcelFile(file, ExcelReaderFactory.CreateOpenXmlReader(stream));
    }


    static void ReadMSOfficeExcelFile(string file, IExcelDataReader xlsReader) {
        string xlsRow;
        while (xlsReader.Read()) {
            xlsRow = "";
            for (int i = 0; i < xlsReader.FieldCount; i++) {
                xlsRow += " " + xlsReader.GetString(i);
            }
            CheckLineMatch(file, xlsRow);
        }
    }
0 голосов
/ 22 октября 2015

Используйте ClosedXML и просматривайте наборы столбцов http://ishwarnataraj.blogspot.com/2015/10/excel-regular-expression-parsing.html

0 голосов
/ 10 марта 2012

Вы должны проверить эту библиотеку:

http://code.google.com/p/excellibrary/

Цель этого проекта - предоставить собственное решение .NET для создания, чтения и изменения файлов Excel без использованияCOM-взаимодействие или соединение OLEDB.

В настоящее время реализован формат .xls (BIFF8).В будущем также может поддерживаться .xlsx (Excel 2007).

Это хорошо, но здесь не так уж много документации, поэтому сначала вы можете столкнуться с некоторыми трудностями.

...