Array
(
)

erro no botão

Flávia Rafaele
   - 10 nov 2011

Estou fazendo um aplicativo em c#, junto com uma determinada planilha no excel.
O que eu quero fazer é o seguinte, quando eu digito um numero em um textbox, ele busca pra mim se na coluna 11, existe este numero, se existir imprimir toda a linha.
erro1 = does not contain a constructor that takes 1 arguments
erro2= type used in a using statement must be implicitly convertible to System.IDisposable
codigo do botão
using Microsoft.Office.Interop.Excel;
namespace novoexcel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
using (var excelUtilities = new ExcelUtilities (@C:\teste.xlsx)){}
{
var value = int.Parse(this.textBox1.Text);
var stringDelimitada = excelUtilities.GetDelimitedRow(11, value);
// ou você pode usar esta
//// var colecaoCelulas = excelUtilities.GetCells(11, value);
}
}
}
}
codigo da classe
using Microsoft.Office.Interop.Excel;
namespace novoexcel
{
class ExcelUtilities
{
public class ExcelUtilities : IDisposable
{
private Application _excelApplication = default(Application);
private Workbook _excelWorkbook = default(Workbook);
private Worksheet _excelWorksheet = default(Worksheet);
public ExcelUtilities(string filename)
{
_excelApplication = new Application();
_excelWorkbook = _excelApplication.Workbooks.Open(filename);
_excelWorksheet = _excelWorkbook.Worksheets[1];
}
public string GetDelimitedRow(int columnIndex, int value)
{
var range = _excelWorksheet.UsedRange;
var retorno = new StringBuilder();
foreach (Range r in range.Rows)
{
Range c = r.Columns[columnIndex];
if (c.Value == value)
{
foreach (Range coluna in r.Columns)
{
retorno.AppendFormat({0};, coluna.Value);
}
}
}
return retorno.ToString();
}

public IList<Range> GetCells(int columnIndex, int value)
{
var range = _excelWorksheet.UsedRange;
var retorno = new List<Range>();
foreach (Range r in range.Rows)
{
Range c = r.Columns[columnIndex];
if (c.Value == value)
{
foreach (Range coluna in r.Columns)
{
retorno.Add(coluna);
}
}
}
return retorno;
}
public void Dispose()
{
_excelWorkbook.Close();
_excelApplication.Quit();
}
}
}
}
AGUEM PODE ME AJUDAR POR FAVOR?

Fabio Rosa
   - 22 nov 2011

Olá Flávia,

Não sei se já conseguiu resolver seu problema, mas peguei seu código e simplesmente colei no meu VS. Executei e funcionou... Creio que não tenha nada de errado com ele...

Obs.: Usei o VS 2010 com .net framework 4.0 e Office 2010.

Abraço.