none
Exportar para excel com coluna ajustada RRS feed

  • Pergunta

  • Exporto para um arquivo .csv o retorno de um DataSet.

    Porém ao exportar para excel, algumas colunas ficam com a numeração comprimida. Eu queria configurar para as colunas já irem ajustadas de acordo com o tamanho do numero ou palavra que consta na coluna.

    Até agora tenho:

    Private Sub ExportarCSV(ByVal oDataSet As DataSet, ByVal Nm_Arquivo As String)
    
            Dim csvFile As String = ConfigurationManager.AppSettings("DiretorioRelatorioExcel").ToString & Nm_Arquivo
            Dim outFile As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(csvFile, False)
            Dim strLinha As StringBuilder
    
    
            outFile.WriteLine("O.S.;Data da Importacao;CPF;UF;Motivo;")
    
    
            If Not oDataSet Is Nothing Then
                If Not oDataSet.Tables(0).Rows.Count = 0 Then
                    'strLinha = New StringBuilder
                    For Each _row As Data.DataRow In oDataSet.Tables(0).Rows
                        strLinha = New StringBuilder
    
                        strLinha.Append(_row.Item("Nr_Ordem_OS").ToString)
                        strLinha.Append(";")
                        strLinha.Append(_row.Item("Dt_Inclusao").ToString)
                        strLinha.Append(";")
                        strLinha.Append(_row.Item("Nr_CPFCNPJ").ToString)
                        strLinha.Append(";")
                        strLinha.Append(_row.Item("Sg_Unidade_Federativa").ToString)
                        strLinha.Append(";")
                        strLinha.Append(_row.Item("Ds_Motivo").ToString)
                        strLinha.Append(";")
    
                        outFile.WriteLine(strLinha)
    
                        strLinha = Nothing
    
                    Next
                End If
            End If
    
    
    
            outFile.Close()
    
            ZipFiles(Replace(csvFile, ".csv", ".zip"), csvFile, ConfigurationManager.AppSettings("DiretorioRelatorioExcel").ToString)
    
    
        End Sub

    sexta-feira, 27 de setembro de 2013 20:11

Respostas

  • Cara,

    Segue um exemplo simples para diversas configurações da coluna:

    object misValue = System.Reflection.Missing.Value;
                    
    //Aplicação Excel
    Excel.Application App = new Excel.Application();
                    
    //Pasta
    Excel.Workbook WorkBook = App.Workbooks.Add(misValue);
                    
    //Planilha
    Excel.Worksheet WorkSheet = (Excel.Worksheet)WorkBook.Worksheets.get_Item(1);
    
    // Retorna a celula do Excel
    Microsoft.Office.Interop.Excel.Range celula;
    
    
    
    string[] coluna = linha[i].Split(',');
    
    ArrayList array = new ArrayList();
    
    array.Add((i + 1).ToString());
    array.Add(coluna[1]);
    array.Add(coluna[1].Length.ToString());
    array.Add(coluna[2].Replace('.', ' ').Replace('-', ' '));
    array.Add(string.Format("{0: dd/MM/yyyy}", Convert.ToDateTime(coluna[3])).Replace(" de ", "/"));
    array.Add(coluna[6]);
    array.Add(coluna[6].Length.ToString());
    array.Add(coluna[4]);
    array.Add(coluna[5]);
    array.Add(string.Format("{0:Y}", Convert.ToDateTime(coluna[7])).Replace(" de ", "/"));
    array.Add(rdbPrimeiraVia.Checked ? "1" : "2");
    
    for (int x = 0; x < array.Count; x++)
    {
          celula = (WorkSheet.Cells[i + 24, x + 1] as Microsoft.Office.Interop.Excel.Range);
          celula.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
          celula.Value2 = array[x];                   
    }
    
    //Ajusta as colunas automaticamente
     App.Columns.AutoFit();
    
    
    if (selectedPath != null)
    WorkBook.SaveAs(selectedPath + "\\RelatorioExportacao.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue,
                                        misValue,
                                        Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue,
                                        misValue);
                    WorkBook.Close(true, misValue, misValue);
    App.Quit();
    
    


    Atenciosamente, Samuel dos Anjos

    sexta-feira, 27 de setembro de 2013 23:37