Exportar conteudo de uma grid em txt com tamanhos definidos das colunas

05/12/2013

0

Ola pesoal tenho um classe onde determino o tamanho das colunas de uma grid onde irei exportar para txt, porem apresenta um erro:
Referência de objeto não definida para uma instância de um objeto.

classe:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExportGrid
{
#region Classes_Modelos
public enum TypeDataAlignment
{
Left = 1,
Right = 2
}
public abstract class TypeData : IDisposable
{
private int _length;
private TypeDataAlignment _alignment;
private char _paddingchar;
private string _value;
public TypeData(int Length, TypeDataAlignment Alignment, char PaddingChar)
{
_length = Length;
_alignment = Alignment;
_paddingchar = PaddingChar;
}
public TypeData Set(String Value)
{
this.Value = Value;
return this; // FLUENT
}
public string Get()
{
return this.Value;
}
public string Value
{
get
{
return _value;
}
set
{
if (_alignment == TypeDataAlignment.Left)
{
_value = value.PadLeft(_length, _paddingchar);
}
else if (_alignment == TypeDataAlignment.Right)
{
_value = value.PadRight(_length, _paddingchar);
}
}
}

public void Dispose()
{
GC.SuppressFinalize(this);
}
}
public sealed class TypeDataNumber : TypeData
{
public TypeDataNumber(int Length, TypeDataAlignment Alignment = TypeDataAlignment.Left, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
public sealed class TypeDataAlfaNumber : TypeData
{
public TypeDataAlfaNumber(int Length, TypeDataAlignment Alignment = TypeDataAlignment.Right, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
public sealed class TypeDataValue : TypeData
{
public TypeDataValue(int Length, TypeDataAlignment Alignment = TypeDataAlignment.Left, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
public sealed class TypeDataDate : TypeData
{
public TypeDataDate(int Length = 10, TypeDataAlignment Alignment = TypeDataAlignment.Left, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
public sealed class TypeDataTime : TypeData
{
public TypeDataTime(int Length = 8, TypeDataAlignment Alignment = TypeDataAlignment.Left, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
public sealed class TypeDataPrimaryKey : TypeData
{
public TypeDataPrimaryKey(int Length, TypeDataAlignment Alignment = TypeDataAlignment.Left, char PaddingChar = ' ') : base(Length, Alignment, PaddingChar) { }
}
#endregion

//consulta
public sealed class NomeGrid : IDisposable
{
public TypeData Id { get; set; }
public TypeData Nome { get; set; }
public TypeData Sobrenome { get; set; }
public NomeGrid()
{
this.Id = new TypeDataNumber(1);
this.Nome = new TypeDataAlfaNumber(10);
this.Sobrenome = new TypeDataAlfaNumber(36);
}

public void Dispose()
{
if (this.Id != null) this.Id.Dispose();
if (this.Nome != null) this.Nome.Dispose();
if (this.Sobrenome != null) this.Sobrenome.Dispose();
GC.SuppressFinalize(this);
}
}
}

form:

private void GerarGrid_Txt(DataGridView dgv)
{
try
{
//

StreamWriter strNome = new StreamWriter(".\\teste\\consulta.txt");
NomeGrid nome = new NomeGrid();
int qtdColunas = dgv.Columns.Count;

foreach (DataGridViewRow dgvLinha in dgv.Rows)
{
//Aqui se vai pegar as linhas da sua grid e fazer assim
strNome.WriteLine(string.Format("",
//erro apresenta aqui nome.Id.Set(dgvLinha.Cells[0].Value.ToString()).Get(),
//erro apresenta aqui nome.Nome.Set(dgvLinha.Cells[1].Value.ToString()).Get(),
//erro apresenta aqui nome.Sobrenome.Set(dgvLinha.Cells[2].Value.ToString()).Get()));
}
strNome.Dispose();
nome.Dispose();

MessageBox.Show("Exportado com Sucesso");
}
catch (Exception ex)
{
MessageBox.Show("Não foi possível salvar pelo seguinte motivo: " + ex.Message);
}
}

private void button2_Click(object sender, EventArgs e)
{
GerarGrid_Txt(dgvLinha);
}
Sigrids Lima

Sigrids Lima

Responder

Posts

10/12/2013

Joel Rodrigues

Esse erro (em qualquer lugar que ocorrer) indica que você está tentando usar um objeto que não foi instanciado. Verifique em que ponto ocorre o erro.
Responder

13/12/2013

Sigrids Lima

Resolvir assim:

private void GerarGrid_Txt(DataGridView dgv)
{
StreamWriter strNome = new StreamWriter(".\\consulta.txt");
NomeGrid nomeGrid = new NomeGrid();
try
{

if (dgv.Rows.Count > 1)
{
int linha = 0;
if (dgv.AllowUserToAddRows)
{
linha = 1;
}
for (int i = 0; i < (dgv.Rows.Count - linha); i++)
{
DataGridViewRow dgvLinha = dgv.Rows[i];
if (!(string.IsNullOrEmpty(dgvLinha.Cells[0].Value.ToString()) &&
string.IsNullOrEmpty(dgvLinha.Cells[0].Value.ToString()) &&
string.IsNullOrEmpty(dgvLinha.Cells[0].Value.ToString())))
{
strNome.WriteLine(string.Format("",
nomeGrid.Id.Set(dgvLinha.Cells[0].Value.ToString()).Get(),
nomeGrid.Nome.Set(dgvLinha.Cells[1].Value.ToString()).Get(),
nomeGrid.Sobrenome.Set(dgvLinha.Cells[2].Value.ToString()).Get()));
}
}
}
MessageBox.Show("Exportado com Sucesso");
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Error: ", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
nomeGrid.Dispose();
strNome.Dispose();
}
}
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar