Jump to content
PamkY

Criar documento Word

Recommended Posts

PamkY

Boas,

Estou a precisar de criar um documento Word com dados do datagridview.

Até agora tenho isto:

object missing = System.Reflection.Missing.Value;
            object Visible = true;
            object start1 = 0;
            object end1 = 0;

            ApplicationClass WordApp = new ApplicationClass();
            Document adoc = WordApp.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            Range rng = adoc.Range(ref start1, ref missing);
            try
            {              
                rng.Font.Name = "Georgia";
                rng.InsertAfter("Hello World!");
                object filename = "C:\\SalvAçor\\MyWord.doc";
                adoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                WordApp.Visible = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }   

Que funciona na perfeição.

Quando tento acrescentar isto:

rng.Font.Name = "Georgia";
                rng.InsertAfter("Hello World!");
                for (int i = 0; i < rowcount; i++)
                {
                    rng.InsertAfter(dataGridView1.Rows[i].Cells[1].Value.ToString());
                    rng.InsertAfter("Produto");
                }
                object filename = "C:\\SalvAçor\\MyWord.doc";

Aparece-me isto: "A referência de objecto não foi definida como uma instância de um objecto"

Como faço?

Share this post


Link to post
Share on other sites
Tiago Salgado

E já puseste ai um breakpoint para analisares se é retornado algum valor em "dataGridView1.Rows.Cells[1].Value.ToString()" ?

Share this post


Link to post
Share on other sites
PamkY

Já descobri o problema.

rng.InsertAfter(dataGridView1.Rows[i].Cells[0].Value + "\r");

É sem o .ToString()

Em relação a campos de imagens aparece isto System.Byte[] no documento Word.

Share this post


Link to post
Share on other sites
Tiago Salgado

Hum, se tens mesmo a imagem gravada na BD, e não apenas o caminho, deverás fazer algo do tipo.

Dim ms as System.IO.MemoryStream
Dim imagem as image

ms = new System.IO.MemoryStream(o codigo que te retorna um System.Byte[])
imagem = Image.FromStream(ms)

Depois já deves conseguir inserir a imagem. É um bocado de cor este código, não sei se funcionará só assim, mas testa :P

Share this post


Link to post
Share on other sites
PamkY

"The best overloaded method match for 'System.IO.MemoryStream.MemoryStream(byte[])' has some invalid arguments..."

Dá-me isso..

EDIT:

E este também:

"Argument '1': cannot convert from 'object' to 'byte[]'"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.