excel打印类 求一excel打印类 最好是能直接用的...........!不需要excel 模板的那种....!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 { } } 前面少了一点。 /// <summary> /// 将DataGridView中的数据导出到Excel中,并加载显示出来(无加载模板) /// 只用于一般的导出Excel /// </summary> /// <param name="caption">要显示的页头</param> /// <param name="date">打印日期</param> /// <param name="dgv">要进行导出的DataGridView</param> 先谢谢了..我用的是DataTable 数据源 我的C#程序在生成yh.exe的同时,又生成了一个yh.vshost.exe是起什么作用的,有用吗,可以删除吗? listview索引的问题 请问msdn怎么用 水晶报表分组后,怎样统计每组的记录总数 C#中保存图片到SQL中高手进FileStream c#下水晶报表中如何在一页中显示重复的表格? 在WINFORM中如何自定义显示access数据库中存储类型为日期时间的字段 局部刷新 谁在水晶报表里做过像Checkbox那种效果的东西,求助 考研好还是搞计算机技术啊?? C# winodws应用程序 安装向导一定要包含framework吗? 求一坐标点的算法,数学问题,用C#实现谢谢
{
//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
{ }
}
/// 将DataGridView中的数据导出到Excel中,并加载显示出来(无加载模板)
/// 只用于一般的导出Excel
/// </summary>
/// <param name="caption">要显示的页头</param>
/// <param name="date">打印日期</param>
/// <param name="dgv">要进行导出的DataGridView</param>
我用的是DataTable 数据源