Компонент .NET для Excel 2003 генерация электронных таблиц с использованием шаблонов для форматирования

StackOverflow https://stackoverflow.com/questions/1405431

Вопрос

Проблема, которую пытается решить мое приложение, заключается в следующем:

В настоящее время выполняется несколько хранимых процедур, данные вручную копируются из результатов SQL в пустую электронную таблицу, и аналитики-отчеты форматируют данные. Этот процесс был признан слишком долгим и дорогостоящим.

Идеальным решением (на мой взгляд) является приложение .NET с компонентом, который может взять результат хранимой процедуры и записать его в определенный диапазон ячеек в шаблоне рабочего листа (поддерживая форматирование шаблона), а затем я могу просто сопоставить результаты в рабочие книги в приложении .NET.

Есть ли такие приложения? Еще лучше, у кого-нибудь есть лучшие решения?

Спасибо за ваше внимание.

Это было полезно?

Решение

Что я использую для установки данных

получить данные в виде

object[,] excelSpreadsheetData

затем примените данные, установив

public void SetWorksheetData(long rowCount, long columnCount, object[,] excelSpreadsheetData, int startingRow, int startingCol, Worksheet worksheet)
        {
            if (rowCount == 0 || columnCount == 0) return;
            //set the region data.
            object m_objOpt = Missing.Value;
            Range cellRange = worksheet.get_Range(ExcelGeneratorUtils.ExcelColumnFromNumber(startingCol) + startingRow, m_objOpt);
            cellRange = cellRange.get_Resize(rowCount, columnCount);
            cellRange.set_Value(m_objOpt, excelSpreadsheetData);
        }

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

Надеюсь, это поможет

Другие советы

SpreadsheetGear for .NET позволит вам открывать книги Excel, вставлять значения и сохранять книгу.

Вы можете ознакомиться с образцами отчетов Excel (т.е. экспортировать в Excel) здесь и загрузите бесплатную пробную версию здесь .

Отказ от ответственности: мне принадлежит SpreadsheetGear LLC

Вы всегда можете использовать Excel Automation через взаимодействие. Я делал это в тех случаях, когда желаемым результатом является Excel. Это удивительно быстро, но вы должны быть осторожны, чтобы убирать за собой и не оставлять экземпляры Excel запущенными. Вот краткий пример.

        using Excel = Microsoft.Office.Interop.Excel;

        Excel.ApplicationClass _Excel;
        Excel.Workbook WB;
        Excel.Worksheet WS;


        _Excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
        WB = _Excel.Workbooks.Add(System.Reflection.Missing.Value);

        WS = (Excel.Worksheet)WB.Worksheets[1]; 
        WS.Name = "Test";

         try
        {

            int row;
            int col;

            WS.Cells[++row, col] = "COL1";
            WS.Cells[row, ++col] = "COL2";

            WS.get_Range("A1", "A2").Font.Bold = true;
            WS.get_Range("A1", "A2").HorizontalAlignment                     =Excel.XlHAlign.xlHAlignCenter;

            WS.Cells[++row, col] = "Customer";
            WS.Cells[++row, col] = "Expenses" 

            WS.get_Range("A1", "B1").Font.Bold = true;


            WS.Columns.AutoFit();
            WS.Rows.AutoFit();

            WS.Activate();
           _Excel.Visible = true;
        }
        catch (Exception ex)
        {
            WB.Close(false, Type.Missing, Type.Missing);
            _Excel.Quit();
            throw;
        }
        finally
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();



            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WS);


            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(WB);

            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_Excel);


        }

В этом вопросе я задал нечто похожее. Разница в том, что я хочу, чтобы что-то сгенерировало XML-файл, который Excel интерпретирует как электронную таблицу. Если бы вы могли отправить данные в файл XML, а затем преобразовать XML в SpreadsheetML, это может решить вашу проблему. SpreadsheetXM имеет несколько ограничений. Это не потребует установки Excel, и преобразование может быть очень быстрым. А если вы используете Excel 2007, то есть второй формат XML, который вы могли бы использовать, Microsoft Office XML формат. В основном это медленно, потому что я подозреваю, что ваш текущий код взаимодействует с Excel через COM.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top