Pergunta

O problema meu aplicativo está tentando resolver é o seguinte:

Atualmente, vários procedimentos armazenados são executados, os dados são copiados manualmente a partir dos resultados SQL em uma planilha em branco, e relatórios analistas formatar os dados. Este processo tem sido considerado muito longo e dispendioso.

A solução ideal (em minha mente) é um aplicativo .NET com um componente que pode levar um resultado procedimento armazenado e gravá-lo em um intervalo de células específico em um modelo de planilha (mantendo modelo de formatação) e, em seguida, eu posso simplesmente agrupar o resultados em pastas de trabalho no aplicativo .NET.

Existem tais aplicações lá fora? Mesmo melhor, alguém tem alguma soluções melhores?

Obrigado por sua consideração.

Foi útil?

Solução

O que eu uso para definir os dados

obter os dados na forma de

object[,] excelSpreadsheetData

, em seguida, aplicar os dados, definindo

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);
        }

Isso deve manter o modelo de formatação, e define os dados de uma só vez, muito mais rápido do que defini-lo de células, por celular.

Espero que ajude

Outras dicas

SpreadsheetGear for .NET vai deixar você abrir planilhas do Excel, conecte valores e salvar a pasta de trabalho.

Você pode ver amostras de relatórios Excel (ou seja, a exportação para Excel) aqui e baixar uma versão gratuita aqui .

Disclaimer: eu próprio SpreadsheetGear LLC

Você sempre pode usar o Excel Automation através de interoperabilidade. Eu tenho feito isso na ocasião quando a saída desejada for Excel. Sua surpreendentemente rápido, você tem que ter cuidado para limpar depois de si mesmo e não deixar instâncias do Excel em execução. Aqui está um exemplo breve.

        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);


        }

Na esta questão eu pedi algo semelhante. A diferença é que eu quero algo para gerar um arquivo XML que é interpretada pelo Excel como uma planilha. Se você pudesse enviar os dados para um arquivo XML, em seguida, transformar o XML para SpreadsheetML, então isso pode resolver o seu problema. SpreadsheetXM tem algumas limitações, no entanto. Ele não vai exigir Excel para ser instalado e a transformação pode ser muito rápido. E se você usar o Excel 2007, em seguida, há um segundo formato XML que você pode usar, o Microsoft Office XML formato. Basicamente, é lento porque eu suspeito que o seu código atual está interagindo com o Excel através de COM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top