Array
(
)

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

Sigrids Lima
   - 05 dez 2013

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("{0}{1}{2}",
//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);
}

Joel Rodrigues
   - 10 dez 2013

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.

0
|
0

Sigrids Lima
   - 13 dez 2013

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("{0}{1}{2}",
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();
}
}

0
|
0