Click here to Skip to main content
15,878,230 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
With the following code I am able to get the word doc. I am unable to align the values in line
with the column headers. There are 7 columns. The doc is generated in A4 size it seems. The headers appear in 2 rows and the values appear in single rows. How to make it appear uniformly.
Is it possible to use Legal or landscape size and make everything aligned or how to rectify using font size?
C#
private void btnPrint_Click(object sender, EventArgs e)
{
 //   printDocument1.Print();
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "Word Documents (*.doc)|*.doc";
    sfd.FileName = "time.doc";
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        //ToCsV(dataGridView1, @"c:\export.xls");
        ToCsV(gvUserInfo, sfd.FileName); // Here dataGridview1 is your grid view name
    }
}

private void ToCsV(DataGridView dGV, string filename)
{
    string stOutput = "";
    // Export titles:
    string sHeaders = "";
    for (int j = 0; j < dGV.Columns.Count; j++)
        
        sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";
    
    stOutput += sHeaders + "\r\n";
    // Export data.
    for (int i = 0; i < dGV.RowCount - 1; i++)
    {
        string stLine = "";
        for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)
            
            stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";
        stOutput += stLine + "\r\n";
    }
    Encoding utf16 = Encoding.GetEncoding(1254);
    byte[] output = utf16.GetBytes(stOutput);
    FileStream fs = new FileStream(filename, FileMode.Create);
    BinaryWriter bw = new BinaryWriter(fs);
    
    bw.Write(output, 0, output.Length); //write the encoded file
    bw.Flush();
    bw.Close();
    fs.Close();
}
Posted
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900