[ Foro de C# ]
Buenas tardes,
estoy aprendiendo c# a modo autodidacta. Soy muy novato aún, pero estoy intentado hacer una especie de convertidor.
Se trata de importar un archivo excel datetable, que se muestra en un datagrid(esto ya lo he conseguido), y volver a exportarlo a excel (también se hacerlo, pero no como quiero).
Lo que quiero es exportar los datos, pero no en el mismo orden, ni todas. Quiero celdas determinadas.
Dejo un ejemplo:
Tengo una hoja con 3000 de estas lineas:
A1 B1 C1 D1
valor1 valor2 valor3 valor4
y quiero esto:
A1 B1 C1 D1
valor3 valor1
valor2
Toda sugerencia se agradece,
muchas gracias
La sugerencia es que si eres novato no hagas cosas tan rebuscadas... ;-)
(Lo siento, no he trabajado con hojas de cálculo desde programa, no puedo ayudarte; sólo decirte que debe existir alguna forma de iterar por los datos para guardar sólo los que necesites)
Buenas noches.
Gracias por contestar. La verdad que siempre he querido aprender a programar, desde que tenia el sinclair spectrum 128 ya copiaba códigos de basic de revistas, pero antes no estaba google como ahora, y aprender resultaba muy difícil.
Me he tirado un poco a la piscina, porque mi trabajo es contable y el convertidor me puede ahorrar unas 3000 facturas al mes. Además me supone aprender y un gran reto.
Tengo el código muy avanzado, pensaba que me atascaria en algún punto y lo abandonaría, pero la verdad que todos los problemas que me están surgiendo increíblemente los estoy solucionando, aunque hay algunos detalles que no se como hacer y los dejo para el final. Cuando llegue el momento es posible que recurra de nuevo al foro.
Agradecerle las molestias que se toma en enseñar y explicar, muchas gracia s
Te adjunto un ejemplo muy básico.
Tienes que añadir la referencia: Microsoft.office.interop.Excel y al ejecutar debería de generar un libro Excel con los valores del array.
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Unos valores de muestra para rellenar
string [,]sArray;
sArray = new string[5, 3];
sArray[0, 0] = "Celda 0-0";
sArray[0, 1] = "Celda 0-1";
sArray[0, 2] = "Celda 0-2";
sArray[1, 0] = "Celda 1-0";
sArray[1, 1] = "Celda 1-1";
sArray[1, 2] = "Celda 1-2";
sArray[2, 0] = "Celda 2-0";
sArray[2, 1] = "Celda 2-1";
sArray[2, 2] = "Celda 2-2";
sArray[3, 0] = "Celda 3-0";
sArray[3, 1] = "Celda 3-1";
sArray[3, 2] = "Celda 3-2";
sArray[4, 0] = "Celda 4-0";
sArray[4, 1] = "Celda 4-1";
sArray[4, 2] = "Celda 4-2";
// Crear los objetos necesarios para trabajar con Exce.
Microsoft.Office.Interop.Excel.Application obj_Excel;
Microsoft.Office.Interop.Excel.Workbook libroexcel;
Microsoft.Office.Interop.Excel.Worksheet hojaexcel;
object misValue = System.Reflection.Missing.Value;
obj_Excel = new Microsoft.Office.Interop.Excel.Application();
libroexcel = obj_Excel.Workbooks.Add(misValue);
hojaexcel = (Microsoft.Office.Interop.Excel.Worksheet)libroexcel.Worksheets.get_Item(1);
obj_Excel.Visible = false; // Permite ver o no la hoja en pantalla mientras el programa trabaja con ella.
for (int f = 1; f < 6; f++)
{
for (int n = 1; n < 4; n++)
{
hojaexcel.Cells[f,n] = sArray[f-1,n-1];
}
}
libroexcel.SaveAs("Libroexcel.xls");
libroexcel.Close();
}
}
}
Espero qué te pueda ayudar.
Muchas gracias,
ya lo tengo terminado, practicamente. Es muy parecido a lo que has posteado, solo que yo en el for en vez de usar los valores < 6 y <4, he usado grd.Rows[f].Cells[n].Value.ToString(); y los he ido posicionando con hojaexcel.Cells[posicion1, posicion2].
Mas o menos así:
miarray[i] = grd.Rows[f].Cells[2].Value.ToString()
hojaexcel.Cells[f + posicion1, posicion2] = miarray[i]
f++
En cualquier caso, muchas gracias
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)