用java设计一个程序,通过程序将下表中数据存储到记录中
发布网友
发布时间:2022-05-19 01:27
我来回答
共2个回答
热心网友
时间:2024-03-02 17:27
你的问题本身就有太多疑问,想帮都帮不上。
1.什么表?是EXCEL的表吗?如果是,等下告诉你如何POI插件实现.
2.存储到什么记录?数据库?什么数据库?SQL SERVER?如果是,同样等下告诉你方法;
3.是纯JAVA实现还是可以JSP实现?因为用JSP实现也挺简单的。
这样吧,我就在一知半解的情况下给出解决办法吧:
1.首先,这个是JSP实现的通过上传EXCEL表然后存储到SQL SERVER中的代码:
(PS:首先要用JXL包)
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.io.*,jxl.*,jxl.write.*,jxl.write.*,jxl.format.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%@ page import="java.awt.*"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="com.jspsmart.SmartFile"%>
<jsp:useBean id="common" class="com.teach.db.commonMethod" scope="page">
</jsp:useBean>
<%//实现EXCEL文件上传,上传之后把EXCEL文件中的内容导入SQL server数据库中
//用smartUpload组件把EXCEL文件上传
com.jspsmart.SmartUpload smartUpload = new com.jspsmart.SmartUpload(); //初始化smartUPload
smartUpload.initialize(pageContext);
smartUpload.service(request, response);
smartUpload.upload();
com.jspsmart.SmartFile file = smartUpload.getFiles().getFile(0); //得到上页输入的文件
//取中文表单参数
String newFileName = "test.xls";
//改名上传
file.saveAs("excel/" + newFileName, smartUpload.SAVE_VIRTUAL);
%>
<%!public String codeToString(String str) {//处理中文字符串的函数
String s = str;
try {
byte tempB[] = s.getBytes("ISO-8859-1");
s = new String(tempB);
return s;
} catch (Exception e) {
return s;
}
}
%>
<html>
<head>
<title></title>
</head>
<body>
<%//得到前页传过来的参数
String courseId=session.getAttribute("courseId").toString();
%>
<%String path = request.getRealPath("\\") + "excel" + "\\"
+ "test.xls";//Excel文件URL
InputStream is = new FileInputStream(path);//写入到FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表
int rsRows = st.getRows(); //得到excel的总行数
for (int i = 1; i < rsRows; i++) {
Cell cell0 = st.getCell(0, i);//得到工作表的第一个单元格,即A1
Cell cell1 = st.getCell(1, i);//得到工作表的第二个单元格,即A1
try {
String content0 = cell0.getContents();//getContents()将Cell中的字符转为字符串
int content1 = Integer.parseInt(cell1.getContents()); //得到条形码
//存入数据库
String sql = "insert into sy_score(courseId,scoreStudentName,score)"
+ "values("
+ courseId
+ ",'"
+ content0
+ "',"
+ content1+")";
System.out.println(sql);
common.Del_Insert(sql); //执行SQL语句
} catch (Exception e) {
//如果EXCEL文件中输入的数据有错,则跳过此行数据
session.setAttribute("message", "有错误,不能导入,请检查您的excel文件");
continue;
}
}
wb.close();//关闭工作薄
is.close();//关闭输入流
response.sendRedirect("insert_done.jsp"); //转到成功页
%>
</body>
</html>
2.如果不是要JSP的,那么来看看用纯JAVA如何实现:
(PS:要用到APACHE的POI)
用Apacher的POI读取Excel,再写入SQL Server就可以
这个是读取的例子 读取分析完后直接写入库中就行
public class ReadExcelToSql
{
private void readExcel(File file)
{
DecimalFormat df = new DecimalFormat("#");
try
{
HSSFWorkbook book=new HSSFWorkbook(new FileInputStream(file));
for(int numSheets=0;numSheets<book.getNumberOfSheets();numSheets++)
{
if(null!=book.getSheetAt(numSheets))
{
//System.out.println("Sheet存在");
HSSFSheet sheet=book.getSheetAt(numSheets);
for(int numRows=0;numRows<=sheet.getLastRowNum();numRows++)
{
if(null!=sheet.getRow(numRows))
{
//System.out.println("Row存在");
HSSFRow row=sheet.getRow(numRows);
for(short numCells=0;numCells<=row.getLastCellNum();numCells++)
{
if(null!=row.getCell(numCells))
{
HSSFCell cell=row.getCell(numCells);
int cellType=cell.getCellType();
switch(cellType)
{
case 0:
System.out.print(df.format(cell.getNumericCellValue()));
break;
case 1:
System.out.print(cell.getRichStringCellValue());
break;
default:break;
}
System.out.print("\t");
}
}
System.out.println();
}
}
}
}
}catch(Exception ex)
{
ex.printStackTrace();
}
}
}
具体表项之间的对应你自己稍微设计一下就可以了。还有不明白的可以给我留言.
热心网友
时间:2024-03-02 17:27
出钱么