可以用FineReport报表软件实现。finereport是纯java软件,类excel设计模式,是一款功能极其牛掰的表格工具,可与数据库直接对接(一般的数据库,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本数据直接导入当然也支持,企业级额应用中包括设置定时报表、自定汇总数据发送邮件、报表权限分配、决策平台搭建等,因为是专业的报表软件,功能很强大,其实很多业内人士都在用这款软件,另外几乎不用自己编写代码,所以新手很容易上手使用。应该会比较适合您的,满意的话可以采纳的哦,谢谢了
创新互联公司长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为桃江企业提供专业的做网站、成都网站设计,桃江网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。
楼主,这个可是我谁不着起来花了半个小时想的算法哈,多给分
我没有用对象,用了String[] 数组来模拟你的集合中的表格数据
亲测通过
代码开始了
//--------------------------------------------------------------------------------------------------------------------
import java.util.ArrayList;import java.util.List;
public class test {
ListListString[] all=new ArrayListListString[]();
List list=new ArrayList();
//测试数据
String[] x={"A","xxxxx","A币","100"};
String[] x1={"A","xxxxx","A币","200",};
String[] x2={"B","xxxxx","B币","300"};
String[] x3={"A","xxxxx","c币","200"};
public List init()//初始化
{
list.add(x);
list.add(x1);
list.add(x2);
list.add(x3);
return list;
}
//筛选方法
public List chose(List te)
{
ListString[] temp=new ArrayListString[]();
String [] A=(String[]) te.get(0);
ListString[] l=new ArrayListString[]();
for (int j = 0; j te.size(); j++) {
String [] B=(String[]) te.get(j);
if(A[0]==B[0]A[2]==B[2] )//这里筛选
l.add(B);
else
temp.add(B);
}
all.add(l);
return temp;
}
//返回所得结果
public ListListString[] result(){
return all;
}
//主方法---------------------------------------------
public static void main(String[] args) {
test t=new test();
List nt=t.chose(t.init());//初始化测试数据
while(true)
{
nt=t.chose(nt);
if(nt.size()==0)
break;
}
ListListString[] res=t.result();
//打印结果
for (int e = 0; e res.size(); e++) {
ListString[] fi= res.get(e);
System.out.println("第"+e+"种");
String [] str=fi.get(0);
for(int i=0;ifi.size();i++){
String[] o=(String[]) fi.get(i);
if(i!=0){
str[3]=(Integer.parseInt(str[3])+Integer.parseInt(o[3]))+"";
}
System.out.println(o[0].toString()+"---"+o[1].toString()+"---"+o[2].toString()+"---"+o[3].toString());
}
System.out.println("合计:\n"+str[0].toString()+"---"+str[2].toString()+"---"+str[3].toString()+"---"+fi.size());
}
}
}
//------------------------------------------------------------------------------
代码结束咯
打印的结果
第0种
A---xxxxx---A币---100
A---xxxxx---A币---200
合计:
A---A币---400---2
第1种
B---xxxxx---B币---300
合计:
B---B币---300---1
第2种
A---xxxxx---c币---200
合计:
A---c币---200---1
不知道你是不想要这样的结果啊,只需修改字符串长度就可以用了
动态创建表格,比如:str你从数据库读出列名,data数据集
这里的data是一个二维数组,
就像
{{学号:001,出生:09-01,成绩99}
{学号:001,出生:09-01,成绩99}
{学号:001,出生:09-01,成绩99}}
生成表格
学号 出生日期 成绩
001 09-01 99
001 09-01 98
001 09-01 99
java表格就是java swing。
//创建表头
String[] columnNames = { "First Name", "Last Name", "Sport",
"# of Years", "Vegetarian" };
//创建显示数据
Object[][] data = {
{ "Kathy", "Smith", "Snowboarding", new Integer(5),
new Boolean(false) },
{ "John", "Doe", "Rowing", new Integer(3), new Boolean(true) },
{ "Sue", "Black", "Knitting", new Integer(2),
new Boolean(false) },
{ "Jane", "White", "Speed reading", new Integer(20),
new Boolean(true) },
{ "Joe", "Brown", "Pool", new Integer(10), new Boolean(false) } };
/*
* JTable还提供了一个重载的构造方法,传入两个Vector
* JTable(Vector rowData, Vector columnNames)
*
*/
final JTable table = new JTable(data, columnNames);
table.setBackground(Color.YELLOW);