none
Update primeiro campo disponível arquivo .xlsx RRS feed

  • Pergunta

  • Bom dia a todos,

    Recebo de um cliente uma planilha com campos pré preenchidos e tenho alguns outros campos que precisam ser preenchidos

                   Col A    Col B    Col C

    Linha 1      aa                   cc   Esses campos são repetidos em todas as linhas!

    Linha 1      aa                   cc  

    Linha 1      aa                   cc  

    Assim por diante!

    Como posso estar procedendo para realizar um Update nos campos em branco?

    Tentei realizar um insert de um único campo em branco, mais inseriu na ultima linha disponíveis!

    Imaginei realizar o update pelo índice da linha mais não sei como proceder.

    Esse update teria que pegar a primeira linha livre com o campo da Coluna B em branco e preencher, assim iria preencher uma linha por vez!

                   Col A    Col B    Col C

    Linha 1      aa      teste     cc   

    Linha 1      aa                   cc  

    Linha 1      aa                   cc  

    Desde já muito obrigado!

    segunda-feira, 6 de fevereiro de 2017 15:27

Respostas

  • Depois de muita pesquisa consegui resolver meu problema!

    Segue a solução!

     protected void Button1_Click(object sender, EventArgs e)
            {
                string Caminho = @"C:\testeXLSX\BM TESTE.xlsx";
                
                try
                {
                    Planilha_load(Caminho);
                }
                catch (Exception ex)
                {
                    //MessageBox.Show(ex.message);
                }
            }
    
            private void Planilha_load(string caminho)
            {
                Microsoft.Office.Interop.Excel.Application _excelApp = new Microsoft.Office.Interop.Excel.Application();
    
                Workbook workBook = _excelApp.Workbooks.Open(caminho,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing);
    
                ExcelScanIntenal(workBook);
              
                workBook.Save();            
                workBook.Close(false, caminho, null);
                _excelApp.Quit();
    
            }
    
            private void ExcelScanIntenal(Workbook workBookIn)
            {
                foreach (Worksheet sheet in workBookIn.Sheets)
                {
                    if (sheet.Name == "TESTE")
                    {
                        Range excelRange = sheet.UsedRange;
                        object[,] valueArray = (object[,])excelRange.get_Value(
                            XlRangeValueDataType.xlRangeValueDefault);
                        ProcessObjects(valueArray, excelRange);
                        
                    }
    
    
                }
            }
    
            private void ProcessObjects(object[,] valueArray, Range excelRange)
            {
                //ai vc faz o que quiser com a matriz 
    
                excelRange.Cells.set_Item(7, 2, "222222");
                excelRange.Cells.set_Item(7, 3, "ABC");
                excelRange.Cells.set_Item(7, 4, "DFG");
                excelRange.Cells.set_Item(7, 5, "DD");
                excelRange.Cells.set_Item(7, 6, "AA");
                excelRange.Cells.set_Item(7, 7, "1");
                excelRange.Cells.set_Item(7, 9, "1/1/2017");
                excelRange.Cells.set_Item(7, 10, "15/1/2017");
                excelRange.Cells.set_Item(7, 20, "TESTE UPDATE VARIOS CAMPOS");
            }
    Desde já Muito Obrigado!

    • Marcado como Resposta Marcio Camargo terça-feira, 7 de fevereiro de 2017 13:50
    terça-feira, 7 de fevereiro de 2017 13:50

Todas as Respostas

  • Olá Marcio, segue um exemplo:

                var excelApp = new Application();
                excelApp.Workbooks.Open("C:\\myFile.xls", Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing,
                                                       Type.Missing, Type.Missing);
                var ws = excelApp.Worksheets;
                var worksheet = (Worksheet)ws.get_Item("Sheet1");
                Range range = worksheet.UsedRange;
                object[,] values = (object[,])range.Value2;
    
                for (int row = 1; row <= values.GetUpperBound(0); row++)
                {
                    string phone = Convert.ToString(values[row, 2]);
                    if (!phone.StartsWith("0"))
                    {
                        phone = "0" + phone;
                    }
                    range.Cells.set_Item(row, 2, phone);
                }
                excelApp.Save("C:\\Leads.xls");
                excelApp.Quit();
    

    Fonte: http://stackoverflow.com/questions/15899046/replace-or-update-entries-in-excel-file


    • Editado John Owl segunda-feira, 6 de fevereiro de 2017 15:37 Remoção de código desnecessário.
    • Marcado como Resposta Marcio Camargo segunda-feira, 6 de fevereiro de 2017 15:52
    • Não Marcado como Resposta Marcio Camargo segunda-feira, 6 de fevereiro de 2017 15:52
    segunda-feira, 6 de fevereiro de 2017 15:36
  • Boa tarde Jonh

    Obrigado pelo retorno, tentei replicar seu exemplo mais esta dando alguns erros que não estou conseguindo solucionar!

    Meu projeto é baseado em WebForm e tem o seguinte cenário.

    O usuário do sistema vai colocar a planilha em uma pasta vai preencher alguns dados na pagina de pesquisa, nessa pesquisa vai retornar com as informações necessárias para o preenchimento da planilha.

    Acho que minha Thread foi enviada para local errado pelo  William John Adam Trindade! RS

    Mais você poderia me ajudar!

    segunda-feira, 6 de fevereiro de 2017 16:05
  • Depois de muita pesquisa consegui resolver meu problema!

    Segue a solução!

     protected void Button1_Click(object sender, EventArgs e)
            {
                string Caminho = @"C:\testeXLSX\BM TESTE.xlsx";
                
                try
                {
                    Planilha_load(Caminho);
                }
                catch (Exception ex)
                {
                    //MessageBox.Show(ex.message);
                }
            }
    
            private void Planilha_load(string caminho)
            {
                Microsoft.Office.Interop.Excel.Application _excelApp = new Microsoft.Office.Interop.Excel.Application();
    
                Workbook workBook = _excelApp.Workbooks.Open(caminho,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                 Type.Missing, Type.Missing);
    
                ExcelScanIntenal(workBook);
              
                workBook.Save();            
                workBook.Close(false, caminho, null);
                _excelApp.Quit();
    
            }
    
            private void ExcelScanIntenal(Workbook workBookIn)
            {
                foreach (Worksheet sheet in workBookIn.Sheets)
                {
                    if (sheet.Name == "TESTE")
                    {
                        Range excelRange = sheet.UsedRange;
                        object[,] valueArray = (object[,])excelRange.get_Value(
                            XlRangeValueDataType.xlRangeValueDefault);
                        ProcessObjects(valueArray, excelRange);
                        
                    }
    
    
                }
            }
    
            private void ProcessObjects(object[,] valueArray, Range excelRange)
            {
                //ai vc faz o que quiser com a matriz 
    
                excelRange.Cells.set_Item(7, 2, "222222");
                excelRange.Cells.set_Item(7, 3, "ABC");
                excelRange.Cells.set_Item(7, 4, "DFG");
                excelRange.Cells.set_Item(7, 5, "DD");
                excelRange.Cells.set_Item(7, 6, "AA");
                excelRange.Cells.set_Item(7, 7, "1");
                excelRange.Cells.set_Item(7, 9, "1/1/2017");
                excelRange.Cells.set_Item(7, 10, "15/1/2017");
                excelRange.Cells.set_Item(7, 20, "TESTE UPDATE VARIOS CAMPOS");
            }
    Desde já Muito Obrigado!

    • Marcado como Resposta Marcio Camargo terça-feira, 7 de fevereiro de 2017 13:50
    terça-feira, 7 de fevereiro de 2017 13:50