Vector vet = new Vector()的问题

快跑蜗牛哥 2009-09-19 08:32:21
jxl实现excel导入oracle的问题
我是这样做的,先读取excel中的数据,然后
存入Vector vet = new Vector(); 中,
但获得数据时出现问题,
excel中有1千多笔资料,但只能获得6百多笔
然后显示Array index out of range:3
请问有啥好方法解决不,另:当excel中有
2008/5/25这种内容时,获得的时候变成数字了
不是变成2008525,请问有啥好办法解决不?
...全文
223 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈砚羲 2012-01-10
  • 打赏
  • 举报
回复
每一个有用的答案
meander 2009-09-21
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
最好做成几百条一循环的那种,或者把excel保存成csv格式,那样的话文件大小稍微能小一点,excel有时候因为版本啦格式啦什么的往往引起好多莫名其妙的问题。
日月小小 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qw0907 的回复:]
一千多条数据不算多吧?读取日期型的数据时,我是先转换成.toString()了。

[/Quote]
------------------------------
同上!同上!
快跑蜗牛哥 2009-09-21
  • 打赏
  • 举报
回复
一千多条数据不算多吧?读取日期型的数据时,我是先转换成.toString()了。
shengnba 2009-09-19
  • 打赏
  • 举报
回复
支持一楼,也可以读取100条或XX条,进入写入数据库,效率应该会好点...批量写入。。。
aaron0203 2009-09-19
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
gesanri 2009-09-19
  • 打赏
  • 举报
回复
有可能你数据太大了,你先别放1000多条,先放500条试试,看都能不能取到,如果能的话,你可以边读边写,或者一次读入500条就好了,至于日期,直接当字符串处理好了,oracle中定义varchar类型存放
天火 2009-09-19
  • 打赏
  • 举报
回复
学习
rumlee 2009-09-19
  • 打赏
  • 举报
回复
下标越界,那是你程序有问题,不过按照正常逻辑来说,你不应该先全部存入一个Vector中,然后存数据库,你完全可以一边读,一边写啊。因为你完全存入一个Vector中,如果数据量大的话,很有可能导致内存溢出的。
日期单元格按照日期格式读应该可以读到Date的,或者直接取String,取出来也应该不是数字。
dingoc 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gesanri 的回复:]
有可能你数据太大了,你先别放1000多条,先放500条试试,看都能不能取到,如果能的话,你可以边读边写,或者一次读入500条就好了,至于日期,直接当字符串处理好了,oracle中定义varchar类型存放
[/Quote]
学习
Marty束 2009-09-19
  • 打赏
  • 举报
回复
看看
mtrhhy 2009-09-19
  • 打赏
  • 举报
回复
最好是,分批来读、写,
evangoe 2009-09-19
  • 打赏
  • 举报
回复
楼主如果不需要考虑 单个EXCEL数据完整性的时候,可以分批导入到数据库。

刚刚一个项目中使用到jxl导入和导出excel文件的。:)
youjianbo_han_87 2009-09-19
  • 打赏
  • 举报
回复
我曾经做过灌档的动作,就是将excel的数据灌入到DB里面,那个excel有好几千条记录呢,我用POI解析的,都没有问题,所以,肯定不是jxl的问题。可以不用先保存到 vector这种集合里,直接解析后往DB里面插入就可以了。

看你报错的信息,十有八九十程序写的有问题,不会是数据库的原因。
#include #include #include <vector> #include #include #include "CCMat.h" #include "Point.h" using namespace::std; //坐标: //f,H double f,H,m; int N; //a1-c3 double a1,a2,a3,b1,b2,b3,c1,c2,c3; //XYZ的代号: double Xb,Yb,Zb; //六个外方为元素: double g_Xs,g_Ys,g_Zs; double dXs, dYs, dZs; double g_fai,g_omga,g_kama; double dfai, domga, dkama; //像点坐标的表示: double x,x_estimate; double y,y_estimate; //12个系数: double a00,a01,a02,a03,a04,a05,a10,a11,a12,a13,a14,a15; //控制点坐标: vector vpoints; //计算a1-c3 void abc_get() { a1 = cos(g_fai)*cos(g_kama) - sin(g_omga)*sin(g_fai)*sin(g_kama); a2 = -cos(g_fai)*sin(g_kama)-sin(g_omga)*sin(g_fai)*cos(g_kama); a3 = -sin(g_fai)*cos(g_omga); b1 = cos(g_omga)*sin(g_kama); b2 = cos(g_omga)*cos(g_kama); b3 = -sin(g_omga); c1 = sin(g_omga)*cos(g_kama) + cos(g_fai)*sin(g_omga)*sin(g_kama); c2 = -sin(g_omga)*sin(g_kama) + cos(g_fai)*sin(g_omga)*cos(g_kama); c3 = cos(g_omga)*cos(g_fai); } //计算XbYbZb void XbYbZb_get(double X,double Y,double Z) { Xb = a1*(X - g_Xs)+b1*(Y - g_Ys)+c1*(Z - g_Zs); Yb = a2*(X - g_Xs)+b2*(Y - g_Ys)+c2*(Z - g_Zs); Zb = a3*(X - g_Xs)+b3*(Y - g_Ys)+c3*(Z - g_Zs); } //计算像点坐标的近似值: //double x_or_y_get(char flg,double X,double Y,double Z); double x_or_y_get(char flg) { if (flg == 0) return -f*Xb/Zb; else return -f*Yb/Zb; } //计算a00到a15 CCMat a00a15_get(double x,double y) { a00 = (a1 * f + a3 * x)/Zb; a01 = (b1 * f + b3 * x)/Zb; a02 = (c1 * f + c3 * x)/Zb; a10 = (a2 * f + a3 * y)/Zb; a11 = (b2 * f + b3 * y)/Zb; a12 = (c2 * f + c3 * y)/Zb; a03 = y * sin(g_omga) -(x*(x*cos(g_kama)-y*sin(g_kama))/f + f*cos(g_kama))*cos(g_omga); a04 = -f*sin(g_kama) - x*(x*sin(g_kama)+y*cos(g_kama))/f; a05 = y; a13 = -x * sin(g_omga) -(y*(x*cos(g_kama)-y*sin(g_kama))/f - f*sin(g_kama))*cos(g_omga); //a13 = -x * sin(g_omga) -(x*(x*sin(g_kama)+y*cos(g_kama))/f - f*sin(g_kama))*cos(g_omga); a14 = -f*cos(g_kama) - y*(x*sin(g_kama)+y*cos(g_kama))/f; a15 = -x; vector vetmat; vetmat.push_back(2); vetmat.push_back(6); vetmat.push_back(a00);vetmat.push_back(a01);vetmat.push_back(a02); vetmat.push_back(a03);vetmat.push_back(a04);vetmat.push_back(a05); vetmat.push_back(a10);vetmat.push_back(a11);vetmat.push_back(a12); vetmat.push_back(a13);vetmat.push_back(a14);vetmat.push_back(a15); CCMat matret(vetmat); return matret; } //计算L CCMat lxly_get() { vector vetmat; vetmat.push_back(2);vetmat.push_back(1); vetmat.push_back(x - x_estimate); vetmat.push_back(y - y_estimate); CCMat matret(vetmat); return matret; } //读取初始条件: void readcondition(int numberofDot,istream streamin,ostream streamout ) { N = numberofDot; //控制点数据: for (int i(0);i< numberofDot;i++) { //streamout<<"请输入第"<>point.m_x>>point.m_y>>point.m_z>>point.m_xp>>point.m_yp; //streamin.clear(); vpoints.push_back(point); //streamout<>m; //streamin.clear(); //streamout<>H; //streamin.clear(); //streamout<<"请输入焦距:"; streamin>>f; //streamout<\n"; printMat(cout,result_i); //result_i = matA.turnAround().subMat(matA).reverseMat().subMat(matA.turnAround()).subMat(matL); double a; a = result_i[0][0]; g_Xs += result_i[0][0]; g_Ys += result_i[1][0]; g_Zs += result_i[2][0]; g_fai += result_i[3][0]; g_omga += result_i[4][0]; g_kama += result_i[5][0]; if((result_i[0][0]<=0.0000001 && result_i[0][0]>= -0.0000001 ) && (result_i[1][0]<=0.0000001 && result_i[1][0]>= -0.0000001 ) && (result_i[2][0]<=0.0000001 && result_i[2][0]>= -0.0000001 ) ) break; } cout<<"迭代次数是:"< "; cout.flush(); int _end; cin>>_end; cin.clear(); if(_end == 0) { ofstream file; file.open("result.txt"); file<<"迭代次数是:"< #include #include #include <vector> #include #include #include #include using namespace::std; class Clit { public: Clit(){it = NULL;} vector* vet; vector::iterator it; double& operator[](int j) { int i(it - (*vet).begin() +j); double& r=(*vet)[i]; return r; } }; class CCMat { public: CCMat():m_nX(0),m_nY(0){m_elements.clear();}; CCMat(CCMat* mat); CCMat(vector vet); CCMat(ifstream& file); CCMat(char* file); CCMat(CCMat& mat); CCMat operator=(CCMat& mat); ~CCMat(){m_elements.clear();} Clit operator[](int i); void add(int flg,CCMat& othermat); CCMat subMat(CCMat& rMat); //乘法 CCMat plusMat(CCMat& rmat); //加法 CCMat turnAround(); //转置 CCMat reverseMat(); //求逆矩阵 double valueofMat(const CCMat& mat, int i,int j);//求解代数余子式 void tobttingle(CCMat& mat); //化简为上三角行列式 private: public:int m_nX,m_nY; private: vector m_elements; }; void printMat(ostream& out,CCMat& mat); #else #endif #include #include #include #include <vector> #include #include #include #include #include "CCMat.h" using namespace::std; CCMat::CCMat(CCMat* mat) { m_nX=mat->m_nX;m_nY=mat->m_nY;m_elements = mat->m_elements; } CCMat::CCMat(CCMat& mat) { m_nX = mat.m_nX; m_nY = mat.m_nY; m_elements.resize(mat.m_elements.size()); copy(mat.m_elements.begin(),mat.m_elements.end(),m_elements.begin()); } CCMat::CCMat(vector vet) { if(vet.size()<3 || vet.size()!=vet[0]*vet[1] + 2) return; m_nX = vet[0]; m_nY = vet[1]; m_elements.resize(m_nX*m_nY); copy(vet.begin()+2,vet.end(),m_elements.begin()); } CCMat::CCMat(ifstream& file) { file>>m_nX; file>>m_nY; double val; while(!file.eof()&&!file.fail()&&m_elements.size()!=m_nX*m_nY) { file>>val; m_elements.push_back(val); } file.close(); if(m_elements.size()!=m_nX*m_nY) delete this; } CCMat::CCMat(char* file) { ifstream ofile(file); CCMat mat(ofile); m_nX = mat.m_nX; m_nY = mat.m_nY; m_elements = mat.m_elements; } Clit CCMat::operator[](int i) { Clit lit; if (i>=m_nX) throw new exception("The index may be out of range!"); if (i < 0 ) throw new exception("The index may be zero!"); lit.it = m_elements.begin()+(i*m_nY); lit.vet = &m_elements; return lit; } CCMat CCMat::operator=(CCMat& mat) { if(&mat == this) return *this; m_nX = mat.m_nX; m_nY = mat.m_nY; m_elements.resize(mat.m_elements.size()); copy(mat.m_elements.begin(),mat.m_elements.end(),m_elements.begin()); return *this; } CCMat CCMat::turnAround() { CCMat newmat,oldmat; oldmat = *this; newmat.m_nX = m_nY; newmat.m_nY = m_nX; for(int i=0;inewmat.m_elements.push_back(oldmat[j][i]) ; return newmat; } CCMat CCMat::subMat(CCMat& rMat) { CCMat newmat; if (rMat.m_nX!=m_nY) { newmat.m_nX = newmat.m_nY = 0; return newmat; } newmat.m_nX = m_nX; newmat.m_nY = rMat.m_nY; newmat.m_elements.resize(m_nX*rMat.m_nY); newmat.m_elements.assign(m_nX * rMat.m_nY,0); for(int i= 0;inewmat[i][j] += (*this)[i][k] * rMat[k][j]; } } return newmat; } CCMat CCMat::plusMat(CCMat& rmat) { CCMat newmat; newmat.m_nX = rmat.m_nX; newmat.m_nY = rmat.m_nY; newmat.m_elements.resize(rmat.m_nX *rmat.m_nY); for (int i(0);inewmat.m_elements[i]=m_elements[i]+rmat.m_elements[i]; } return newmat; } void CCMat::tobttingle(CCMat& mat) { if(mat.m_nX != mat.m_nY) return; int N(mat.m_nX); double* buffer; buffer = (double*)malloc(sizeof(double)*N); int flg(0); //这是列信号 while(flg!=N){ for(int j=flg + 1;jnewmat; if(h<0 && v<0) { newmat.m_nX = mat.m_nX; newmat.m_nY = mat.m_nY; }else{ newmat.m_nX = mat.m_nX - 1; newmat.m_nY = mat.m_nY - 1; } newmat.m_elements.clear(); for(int i(0);inewmat.m_elements.push_back(aa); } } if(newmat.m_elements.size()!=newmat.m_nX*newmat.m_nY) return 0; tobttingle(newmat); for(int i1(0);i1<newmat.m_nX;i1++){ _result*=newmat[i1][i1]; } return _result; return 0; } CCMat CCMat::reverseMat() { CCMat newmat;double di; if(m_nX!=m_nY) return newmat; di = valueofMat((*this),-1,-1); if(di==0) return newmat; newmat.m_nX = m_nX; newmat.m_nY = m_nY; for(int i(0);inewmat.m_elements.push_back(valueofMat((*this),i,j)/di); } return newmat.turnAround(); } void printMat(ostream& out,CCMat& mat) { for (int j= 0;j

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧