Чтение Excel Files как серверный процесс

Это - довольно большой вопрос.

LDAP является протоколом для доступа к каталогу. Каталог содержит объекты; обычно связанные с пользователями, группами, компьютерами, принтерами и так далее; информация о структуре компании (хотя откровенно можно расширить его и сохранить что-либо там).

LDAP дает Вам методы запроса добавить, обновить и удалить объекты в рамках каталога (и набор больше, но это - центральные).

то, Что не делает LDAP, обеспечивают базу данных; база данных обеспечивает доступ LDAP к себе, не наоборот. Это намного больше, чем подписано.

11
задан Ian 16 July 2013 в 10:30
поделиться

7 ответов

Было несколько библиотек, которые были выделены разными пользователями, что позволяло реализовать требуемые функции. Я перечислил их здесь, и некоторые из них были оценены, поэтому, где это уместно, я попытался оставить интересные комментарии для их сравнения. Детали, которые я включил, полностью основаны на мнении, Также получил быстрый ответ на технический вопрос от службы поддержки. Наверное, мой выбор из всех.)

SyncFusion BackOffice
(Средняя стоимость и разумная структура. К сожалению, при выполнении модульных тестов возникли большие трудности с реализацией и противоречивые результаты. Также получил ряд «Попытка прочитать защищенную память») ошибки, которые не вдохновляли меня с чисто управляемой библиотекой.)

19
ответ дан 3 December 2019 в 02:52
поделиться

Раньше я использовал ADO.NET для получения данных из xls. Я не уверен, что все типы документов Excel будут поддерживаться, но посмотрите Чтение и запись электронных таблиц Excel с использованием ADO.NET C # DbProviderFactory

Вот также некоторый код из вопроса SO.

Я мог читать и писать в Excel без установки Office или каких-либо сторонних инструментов.

3
ответ дан 3 December 2019 в 02:52
поделиться

Excel.

После многих лет попыток помешать людям использовать Excel на сервере, они отказались / приняли рыночные потребности и начали поддерживать их.

В 2007 есть некоторые улучшения для этого, а в Excel 2010 предполагается еще больше.

1
ответ дан 3 December 2019 в 02:52
поделиться

Вот что-то, что может читать файлы .xls и xlsx. Это открытый исходный код. http://code.google.com/p/excelmapper/ .

По сути, это ORM, поэтому вам нужно иметь дело только с объектами, а не с OleDB.

1
ответ дан 3 December 2019 в 02:52
поделиться

Я не уверен, почему объявление о SO не имеет отношения к вашему вопросу.

Есть нечто подобное, называемое службами Excel от Майкрософт. Я полагаю, это позволяет вам использовать Excel в стиле веб-сервиса. Я думаю, что SpreadSheetGear - это то, что Microsoft использовала в качестве рекламы, используемой для отображения. :)

1
ответ дан 3 December 2019 в 02:52
поделиться

Чтобы читать файлы Excel с помощью C # без установки Excel, вы можете использовать POI Apache.

Это java-библиотека для чтения и записи форматов MS Office. Поскольку это java, а вы используете C #, вам понадобятся IKVM и классы java из POI Project .

Однако самый простой способ - просто загрузить Jon Iles excelent Проект MPXJ , и у вас есть все. Просто установите ссылку на IKVM.OpendJDK.ClassLibrary.dll , IKVM.Runtime.dll , poi-3.2-FINAL-20081019.dll

Я взломал вместе это быстрое консольное приложение, чтобы показать вам простой способ чтения листа Excel .xls. Он считывает только первый лист и не использует итераторы строк или ячеек, но выполняет свою работу хорошо.

NB: вам нужно посмотреть org. apache.poi.ss , чтобы убедиться, что вы можете читать файлы .xlsx и т. д.

//C# code for using the Apache POI libraries
using System;
using System.Collections.Generic;
using System.Text;


// poi for xls
using org.apache.poi;
using org.apache.poi.poifs;
using org.apache.poi.poifs.filesystem;
using org.apache.poi.hssf;
using org.apache.poi.hssf.usermodel;
using org.apache.poi.ss;

namespace ConsoleApplication1
{
    class Test
    {
        static void Main(string[] args)
        {

            if (args.Length != 1)
            {
                Console.Out.WriteLine("Usage: XLSReadTest <xls file>");
            }
            else
            {
                XLSRead x = new XLSRead();
                x.Process(args[0]);
                //x.Process("c:\\temp\\testfile.xls");
            }




        }
    }


    class XLSRead
    {
        public void Process(string inputFile)
        {


            int r = 0;


            Console.Out.WriteLine("Reading input file started.");
            DateTime start = DateTime.Now;

            java.io.InputStream inputStream = new java.io.FileInputStream(inputFile);
            POIFSFileSystem fs = new POIFSFileSystem(inputStream);

            HSSFWorkbook wb = new HSSFWorkbook(fs);
            HSSFSheet sh = wb.getSheetAt(0);


            r = sh.getFirstRowNum();
            while (r <= sh.getLastRowNum())
            {
                HSSFRow row = sh.getRow(r);
                int c = row.getFirstCellNum();
                string val = "";

                while (c < row.getLastCellNum())
                {
                    HSSFCell cell = row.getCell(c);
                    switch(cell.getCellType())
                    {
                      case HSSFCell.CELL_TYPE_NUMERIC:
                          val = cell.getNumericCellValue().ToString();
                          break;
                      case HSSFCell.CELL_TYPE_STRING:
                          val = cell.getStringCellValue();
                          break;
                    }
                    Console.Out.WriteLine("Row: " + r + ", Cell: " + c + " = " + val);
                    c++;
                }
                r++;
            }

            long elapsed = DateTime.Now.Ticks - start.Ticks;
            String seconds = String.Format("{0:n}", elapsed / 1000000);
            Console.Out.WriteLine("\r\n\r\nReading input file completed in " + seconds + "s." + "\r\n");



        }
    }
}
3
ответ дан 3 December 2019 в 02:52
поделиться

Пробовали ли вы SmartXLS для .net ?

или ActiveXLS ?

1
ответ дан 3 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: