package pkt;
import java.io.*;
import jxl.*;
import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class Readxls {
public static int getk(int a[],int row){
int k=0;
if (row<a[0]) k=0;
if ((row>=a[0])&&(row<a[0]+a[1])) k=1;
if ((row>=a[0]+a[1])&&(row<a[0]+a[1]+a[2]))k=2;
if ((row>=a[0]+a[1]+a[2])&&(row<a[0]+a[1]+a[2]+a[3]))k=3;
if ((row>=a[0]+a[1]+a[2]+a[3])&&(row<a[0]+a[1]+a[2]+a[3]+a[4]))k=4;
if ((row>=a[0]+a[1]+a[2]+a[3]+a[4])&&(row<a[0]+a[1]+a[2]+a[3]+a[4]+a[5]))k=5;
return k;
}
public static void main(String args[]) {
try {
Workbook book = Workbook.getWorkbook(new File("c:\\data\\bnu_8.xls"));
Sheet sheet = book.getSheet(0);
int column=sheet.getColumns();
int row=sheet.getRows()-1;
System.out.println(row);
System.out.println(column);
int [][]arr=new int[row][column];
Cell cell;
for(int i=0;i<row;i++){
System.out.println("\r\n");
for(int j=0;j<column;j++){
cell=sheet.getCell(j,i);
arr[i][j]= Integer.parseInt(cell.getContents().toString());
}
}
//建立三维数组,a[学生数][题目数][指标]
int [][][]statistic=new int[column-1][6][4];
int [] tinum=new int[6];
//存储每道题含有的题目数 对每个文件要手工输入
tinum[0]=7;
tinum[1]=9;
tinum[2]=11;
tinum[3]=13;
tinum[4]=15;
tinum[5]=17;
for(int m=1;m<column;m++){
int k=0;
for(int n=0;n<row;n++){
k=getk(tinum,n);
//答题数目
if(arr[n][m]!=99) {
statistic[m-1][k][0]++;
}
//2.每个人在每道题上正确答题数目
if(arr[n][0]==arr[n][m]&&arr[n][0]!=99){
statistic[m-1][k][1]++;
}
//3.漏掉的题目
if(arr[n][0]!=arr[n][m]&&arr[n][0]!=99){
statistic[m-1][k][2]++;
}
//4.虚报
if(arr[n][0]!=arr[n][m]&&arr[n][0]==99){
statistic[m-1][k][3]++;
}
}
}
//把生成的数据写进xls中
// 打开文件
WritableWorkbook wb = Workbook.createWorkbook(new File("c:\\bnu_8.xls"));
// 生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet ws = wb.createSheet("Sheet1", 0);
try {
// 打开文件
// WritableWorkbook wb = Workbook.createWorkbook(new File("c:\\测试.xls"));
// 生成名为“第一页”的工作表,参数0表示这是第一页
// WritableSheet ws = wb.createSheet("Sheet1", 0);
//建立三维数组,a[学生数][题目数][指标]
//int [][][]statistic=new int[column-1][6][4];
for (int m=0;m<column-1;m++)
for(int n=0;n<6;n++)
for(int p=0;p<4;p++){
jxl.write.Number number = new jxl.write.Number( n*4+p+1,m+1, statistic[m][n][p]);
ws.addCell(number);
}
//统计了总体数据
int [] xubao=new int[column-1];
int [] zhengque=new int[column-1];
int [] loudiao=new int[column-1];
int []tongji=new int[column-1];
for(int i=0;i<row;i++){
int j;
System.out.println("\n");
for( j=1;j<column;j++){
//4.输出虚报数目
if(arr[i][0]!=arr[i][j]&&arr[i][0]==99){
xubao[j-1]++;
}
//2.每个人在每道题上正确答题数目
if(arr[i][0]==arr[i][j]&&arr[i][0]!=99){
zhengque[j-1]++;
}
//3.漏掉的题目
if(arr[i][0]!=arr[i][j]&&arr[i][0]!=99){
loudiao[j-1]++;
}
//1 即统计被试在每道题是那个写了几个数字(“99”即空格除外)
if(arr[i][j]!=99) {
tongji[j-1]++;
}
}
}
//综合统计填写
for(int m=0;m<3;m++)
for(int n=0;n<column-1;n++){
jxl.write.Number total1 = new jxl.write.Number(25,n+1,tongji[n]);
ws.addCell(total1);
jxl.write.Number total2 = new jxl.write.Number(26,n+1,zhengque[n]);
ws.addCell(total2);
jxl.write.Number total3 = new jxl.write.Number(27,n+1,loudiao[n]);
ws.addCell(total3);
jxl.write.Number total4 = new jxl.write.Number(28,n+1,xubao[n]);
ws.addCell(total4);
}
// 写入数据并关闭文件
wb.write();
wb.close();
} catch (Exception e) {
System.out.println(e);
}
/*display
System.out.println("\n每道题是那个写了几个数字:");
for( int i=0;i<column-1;i++)
System.out.print(tongji[i]+" ");
System.out.println("\n每个人在每道题上正确答题数目:");
for(int i=0;i<column-1;i++)
System.out.print(zhengque[i]+" ");
System.out.println("\n漏掉的题目:");
for(int i=0;i<column-1;i++)
System.out.print(loudiao[i]+" ");
System.out.println("\n输出虚报数目:");
for(int i=0;i<column-1;i++)
System.out.print(xubao[i]+" ");
*/
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
}