含有打印、统计DataGridView(1)
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Printing;
using System.Drawing;
using System.Windows.Forms;
using System.Windows;
using System.Data;
using Microsoft.Office;
namespace KingBoy
{
class MyDataGrid:DataGridView
{
#region var
//用户可自定义
private Font tableFont=new Font("宋体", 9); // '当前要打印文本的字体及字号
private Font headFont=new Font("黑体", 12, FontStyle.Regular);//表头字体
private Font subHeadFont=new Font("楷体_GB2312", 10, FontStyle.Regular); //副表头字体
private String headText="" ; //表头文字
private String subHeadLeftText=""; //副表头左文字
private String subHeadRightText=""; //副表头右文字
private int headHeight=40; //表头高度
private int subHeadHeight=30; //副表头高度
private Font footFont=new Font("黑体", 12, FontStyle.Underline); //表脚字体
private Font subFootFont=new Font("楷体_GB2312", 10, FontStyle.Regular);//副表脚字体
private String footText=""; ////表脚文字
private String subFootLeftText="" ; //副表脚左文字
private String subFootRightText="" ; //副表脚右文字
private int footHeight=40; //表脚高度
private int subFootHeight=30; //副表脚高度
private String worker=""; //'制表人
private double sum=0; //汇总数据
private int x_unit=0; //表的基本单位
private int y_unit= 24;
//以下为模块内部使用
private PrintDocument printDocument1;
private DataRow dataGridRow;
private DataTable dataTable1;
private int Cols; // '当前要打印的列
private int ColsCount; // '当前DATAGRID共有多少列
private int pageRecordNumber; // '当前要所要打印的记录行数,由计算得到.
private int printingPageNumber=0;// '正要打印的页号
private int pageNumber;// '共需要打印的页数
private int printRecordLeave;// '当前还有多少页没有打印
private int printRecordComplete=0; // '已经打印完的记录数
private int pLeft,pTop,pRight,pBottom,pWidth,pHeight;
private SolidBrush drawBrush = new SolidBrush(System.Drawing.Color.Black);// '当前画笔颜色
private int pRecordNumber=0 ;//'每页打印的记录条数
private int totalPage; //总共应该打印的页数
#endregion
#region property
/// <summary>
///用户自定义字体及字号
/// </summary>
public Font setTableFont
{
set{tableFont=value;}
}
/// <summary>
/// 设置表头字体
/// </summary>
public Font setHeadFont
{
set{headFont =value;}
}
public Font setFootFont
{
set{footFont=value;}
}
public Font setSubFootFont
{
set{subFootFont =value;}
}
public string setHeadText
{
set{headText =value;}
}
public string setSubHeadLeftText
{
set{subHeadLeftText =value;}
}
public string setSubHeadRightText
{
set{subHeadRightText =value;}
}
public string setFootText
{
set{footText =value;}
}
public string setSubFootLeftText
{
set{subFootLeftText =value;}
}
public string setSubFootRightText
{
set{subFootRightText =value;}
}
public int setHeadHeight
{
set{headHeight =value;}
}
public int setSubHeadHeight
{
set{
subHeadHeight =value;
}
}
public int setFootHeight
{
set{footHeight =value;}
}
public int setSubFootHeight
{
set{subFootHeight =value;}
}
public int setCellHeight
{
set{y_unit =value;}
}
/// <summary>
/// 汇总数据
/// </summary>
public double setSum
{
set{sum=value;}
}
/// <summary>
/// 设置制表人
/// </summary>
public string setWorker
{
set{worker =value;}
}
#endregion
#region method
/// <summary>
/// 根据列明统计该列值总和
/// </summary>
/// <param name="colomnName">列明</param>
/// <returns>如果该列明是数值型,则返回统计结果,否则返回0</returns>
public double addColumnDGV(string colomnName)
{
try
{
int i=0; //循环下标
double sum=0;//用来保存统计临时结果
for(i=0;i<this.Rows.Count ;i++)
try
{ sum=sum+Convert.ToDouble(this.Rows[i].Cells[colomnName].Value); }//获取i行colomnName列值
catch (Exception)
{ }
return sum;
}
catch(Exception )
{
return 0;
}
}
public double addColumnDGV(string colomnName,char ch)
{
try
{
int i = 0; //循环下标
double sum = 0;//用来保存统计临时结果
for (i = 0; i < this.Rows.Count; i++)
try
{ sum = sum + Convert.ToDouble(this.Rows[i].Cells[colomnName].Value.ToString().Substring(1, this.Rows[i].Cells[colomnName].Value.ToString().Length-1)); }//获取i行colomnName列值
catch (Exception)
{ }
return sum;
}
catch (Exception)
{
return 0;
}
}
/// <summary>
/// 统计某行从intStartCol列到intEndCol和
/// </summary>
/// <param name="row">行值</param>
/// <param name="intStartCol">起始列索引值</param>
/// <param name="intEndCol">终止列索引值</param>
/// <returns>合法统计结果,非法返回0</returns>
public double addRowDGV(int row,int intStartCol,int intEndCol)
{
try
{
//判断列的起始和终止索引是否有效,行值在有效的范围内
if (this.Columns.Count >0 && intStartCol >=0 && intEndCol <this.Columns.Count && row<this.Rows.Count )
{
int i;
double tmpDec=0;
//循环统计该行起始列到终止列累加和,从intStartCol到intEndCol列都是数值型数据
for (i=intStartCol;i<intEndCol;i++)
try
{tmpDec=tmpDec +(double)(this.Rows[row].Cells[i].Value); }
catch (Exception)
{ }
return tmpDec;
}
else
return 0;
}
catch(Exception)
{
return 0;
}
}
/// <summary>
/// 导出数据到Excel
/// <param name="startComlumn">起始列,0表示第一列,依次类推</param>
/// <param name="endColumn" >终止列,1表示第一列,依次类推</param>
/// </summary>
public void loadDataToExcel(int startComlumn,int endColumn)
{
if (this.Rows.Count <=0)
{ MessageBox.Show("没有数据,无法导出!");
return ;
}
if (startComlumn > endColumn)
{
MessageBox.Show("起始列不能大于终止列!");
return;
}
if (startComlumn>=this.Columns.Count || endColumn>=this.Columns.Count)
{
MessageBox.Show("起始列和终止列都不能大于总列数!");
return;
}
//创建Excel中的新表
Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
oExcel.Application.Workbooks.Add(true);
int n=0;
int i=0;
//填充表头
for (i = startComlumn; i < endColumn; i++)
{
oExcel.Cells[1, i+1] = this.Columns[i].HeaderText;
}
for(n=0;n<this.Rows.Count;n++)
for (i = startComlumn; i <endColumn; i++)
{
oExcel.Cells[n+2, i+1] = this.Rows[n].Cells[i].Value.ToString();
}
oExcel.Visible = true;
oExcel.Quit();
oExcel = null;
GC.Collect();
}
含有打印、统计DataGridView(1)的更多相关文章
- 含有打印、统计DataGridView(2)
/// <summary> /// 导出数据到Excel /// </summary> public void loa ...
- C语言字母频率统计
在进行密码破解时有时候需要得到字母出现的频率信息,下面我将简单的使用C语言来读取一个文件,然后统计该文件内的字母出现的频率. 1.在D盘下新建一个文本文件(文件名为"A.txt") ...
- Linux - wc统计文件行数、单词数或字节数
一 wc简单介绍 wc命令用来打印文件的文本行数.单词数.字节数等(print the number of newlines, words, and bytes in files).在Windows的 ...
- shell的wc命令统计 head tail命令详解
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- C# 使用PrintDocument 绘制表格 完成 打印预览
C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable 经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代 ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
- C# WinForm开发系列 - DataGrid/DataGridView
在WinForm开发中,DataGrid/DataGridView被广泛使用于绑定数据库中数据进行呈现.整理一些关于DataGrid/DataGridView使用的文章,涉及DataGrid/Data ...
- Linux命令-统计文件中的字节数、字数、行数:wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- C# PrintDocument 打印表格
1.封装好的辅助类: using System; using System.Data; using System.Drawing; using System.Drawing.Printing; usi ...
随机推荐
- Lambda表达式详细总结
(一)输入参数 在Lambda表达式中,输入参数是Lambda运算符的左边部分.它包含参数的数量可以为0.1或者多个.只有当输入参数为1时,Lambda表达式左边的一对小括弧才可以省略.输入参数的数量 ...
- [Chromium文档转载,第002章]Mojo C++ Bindings API
Mojo C++ Bindings API This document is a subset of the Mojo documentation. Contents Overview Getting ...
- 在使用FireFox浏览器时,经常打开新标签,页面总是不断自动刷新,解决办法
可以用如下方法尝试(逐个尝试,看看哪个管用): 1.地址栏输入 about:support,右上角有个翻新Firefox,点击,等待浏览器重启,即可. 2.点击:工具-附加组件,把“火狐主页和标签管理 ...
- Unix操作系统的入门与基础
http://dev2dev.cnblogs.com/archive/2005/10/10/251894.aspx Unix操作系统的入门与基础 与大家熟悉的Windows用户界面和使用习惯不同,Un ...
- python数据处理技巧二
python数据处理技巧二(掌控时间) 首先简单说下关于时间的介绍其中重点是时间戳的处理,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00 ...
- SQL 自增列清零方法
SQL Identity自增列清零方法1.使用DBCC控制台命令: dbcc checkident(表名,RESEED,0) 2.truncate table 也可将当前标识值清零 但当有外键等约束时 ...
- 菜鸟之路——Java并发(二)ThreadLocal
一.什么是ThreadLocal ThreadLocal,非常多地方叫做线程本地变量,也有些地方叫做线程本地存储.事实上意思几乎相同.非常多博客都这样说:ThreadLocal为解决多线程程序 ...
- 安装个wampserver 环境 执行php
php代码执行要有相关环境. 在这里推荐一个环境工具.wampserver :内置了下面工具: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5 ...
- UI标签库专题九:JEECG智能开发平台 Choose(选则操作标签)
1. Choose(选则操作标签) 1.1. 參数 属性名 类型 描写叙述 是否必须 默认值 hiddenName string 隐藏域的ID 否 null hiddenid string 隐藏 ...
- 45. Express 框架 静态文件处理
转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 提供了内置的中间件 express.static 来设置静态 ...