求一excel打印类  最好是能直接用的...........!
不需要excel 模板的那种....!!!

解决方案 »

  1.   

    public void ExportToExcel(string caption, string date, DataGridView dgv)
            {
                //DataGridView可见列数
                int visiblecolumncount = 0;
                for (int i = 0; i < dgv.Columns.Count; i++)
                {
                    if (dgv.Columns[i].Visible == true && (dgv.Columns[i] is DataGridViewTextBoxColumn))
                    {
                        visiblecolumncount++;
                    }
                }            try
                {
                    //当前操作列的索引
                    int currentcolumnindex = 1;
                    //当前操作行的索引
                    Excel.ApplicationClass Mylxls = new Excel.ApplicationClass();
                    Mylxls.Application.Workbooks.Add(true);
                    //Mylxls.Cells.Font.Size = 10.5;   //设置默认字体大小
                    //设置标头
                    Mylxls.Caption = caption;
                    //显示表头
                    Mylxls.Cells[1, 1] = caption;
                    //显示时间
                    Mylxls.Cells[2, 1] = date;
                    for (int i = 0; i < dgv.Columns.Count; i++)
                    {
                        if (dgv.Columns[i].Visible == true && (dgv.Columns[i] is DataGridViewTextBoxColumn))   //如果显示
                        {
                            Mylxls.Cells[3, currentcolumnindex] = dgv.Columns[i].HeaderText;
                            Mylxls.get_Range(Mylxls.Cells[3, currentcolumnindex], Mylxls.Cells[3, currentcolumnindex]).Cells.Borders.LineStyle = 1; //设置边框
                            Mylxls.get_Range(Mylxls.Cells[3, currentcolumnindex], Mylxls.Cells[3, currentcolumnindex]).ColumnWidth = dgv.Columns[i].Width / 8;
                            //Mylxls.get_Range(Mylxls.Cells[3, currentcolumnindex], Mylxls.Cells[3, currentcolumnindex]).Font.Bold = true; //粗体
                            //Mylxls.get_Range(Mylxls.Cells[3, currentcolumnindex], Mylxls.Cells[3, currentcolumnindex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //居中显示
                            currentcolumnindex++;
                        }
                    }
                    Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, visiblecolumncount]).MergeCells = true; //合并单元格
                    Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, 1]).RowHeight = 30;   //行高
                    //Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, 1]).Font.Name = "黑体";
                    //Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, 1]).Font.Size = 14;   //字体大小
                    Mylxls.get_Range(Mylxls.Cells[1, 1], Mylxls.Cells[1, visiblecolumncount]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; //居中显示
                    Mylxls.get_Range(Mylxls.Cells[2, 1], Mylxls.Cells[2, 2]).MergeCells = true; //合并
                    Mylxls.get_Range(Mylxls.Cells[2, 1], Mylxls.Cells[2, 2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft; //左边显示
                    //Mylxls.get_Range(Mylxls.Cells[1, 2], Mylxls.Cells[1, 2]).ColumnWidth = 12;  //列宽度                object[,] dataArray = new object[dgv.Rows.Count, visiblecolumncount];                //当前操作列的索引
                    //int currentcolumnindex = 1;
                    //当前操作行的索引
                    for (int i = 0; i < dgv.Rows.Count; i++)   //循环填充数据
                    {
                        currentcolumnindex = 1;
                        for (int j = 0; j < dgv.Columns.Count; j++)
                        {
                            if (dgv.Columns[j].Visible == true && (dgv.Columns[j] is DataGridViewTextBoxColumn))
                            {
                                if (dgv[j, i].Value != null)  //如果单元格内容不为空
                                {
                                    dataArray[i, currentcolumnindex - 1] = dgv[j, i].Value.ToString();
                                }
                                currentcolumnindex++;
                            }
                        }
                    }
                    Mylxls.get_Range(Mylxls.Cells[4, 1], Mylxls.Cells[dgv.Rows.Count + 3, visiblecolumncount]).Value2 = dataArray; //设置边框
                    Mylxls.get_Range(Mylxls.Cells[4, 1], Mylxls.Cells[dgv.Rows.Count + 3, visiblecolumncount]).Cells.Borders.LineStyle = 1; //设置边框
                    Mylxls.Visible = true;            }
                catch
                {
                    MessageBox.Show("信息导出失败,请确认你的机子上装有Microsoft Office Excel 2003!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {            }
            } 
      

  2.   

    前面少了一点。         /// <summary>
            /// 将DataGridView中的数据导出到Excel中,并加载显示出来(无加载模板)
            /// 只用于一般的导出Excel
            /// </summary>
            /// <param name="caption">要显示的页头</param>
            /// <param name="date">打印日期</param>
            /// <param name="dgv">要进行导出的DataGridView</param>
      

  3.   

    先谢谢了..
    我用的是DataTable  数据源