如何用JAVA将数据库中的数据导入到excel表格

如何用JAVA将数据库中的数据导入到excel表格,第1张

import javaio;

import javatextSimpleDateFormat;

import javautil;

import javasql;

import javautilDate;

import javautilHashMap;

import javautilMap;

import jxl;

public class SimUpdate {

 private String fileName;

 public ZfzSimUpdate(String fileName){

  thisfileName = fileName;

 }

 static Map tNames;

 static{

  tNames = new HashMap();

 }

 /

   用于产生 数据库的 ID 值,组成 [年月日时分秒(100-999)] 总共 17 位数

   根据不同的表名,可保证同一秒内产生的 ID 号不重复

  /  

 private static String getDtime() {

  String rid;

  Date nd = new Date();

  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

  rid = sdfformat(nd);

  return rid;

 }

 

 public String getSeqNumber(String tableName) {

  if(tableName == null || ""equals(tableName))

   tableName = "GENERY";

  Integer it;

  // noinspection SynchronizeOnNonFinalField

  synchronized(tNames){

   it = (Integer)tNamesget(tableName);

   if(it == null){

    it = new Integer(100);

    tNamesput(tableName, it);

   }else{

    if(itintValue() > 998)

     it = new Integer(100);

    else

     it = new Integer(1 + itintValue());

    tNamesput(tableName, it);

   }

  }

  return getDtime() + StringvalueOf(it);

 }

 

 private void updateDb(){

  try{

   Connection conn = DbPoolconnectDB();

   if(conn != null){

    Statement stmt = conncreateStatement();

    //

    jxlWorkbook rwb = null;

    try{

     //构建Workbook对象 只读Workbook对象

     //直接从本地文件创建Workbook

     //从输入流创建Workbook

     InputStream is = new FileInputStream(fileName);

     rwb = WorkbookgetWorkbook(is);

     //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中

     //Sheet的下标是从0开始的

     //获取第一张Sheet表

     Sheet rs = rwbgetSheet(0);

     //获取Sheet表中所包含的总列数

     int rsColumns = rsgetColumns();

     //获取Sheet表中所包含的总行数

     int rsRows = rsgetRows();

     //获取指这下单元格的对象引用

     

     String simNumber = "",termSeqId = "";

     //指定SIM卡号及序列号

     for(int i=0;i<rsRows;i++){

      for(int j=0;j<rsColumns;j++){

       Cell cell = rsgetCell(j,i);

       if(j==0){

        simNumber = cellgetContents();

       }  

       termSeqId = "633"+simNumber;

      } 

      String sql = "查询SQL";

      int isOk = stmtexecuteUpdate(sql);

      if(isOk == 0 && !simNumberequals("")){

       String termId = getSeqNumber("termInf");

       String insertSql = "自定义INSERT";

       int isAdd = stmtexecuteUpdate(insertSql);

       if(isAdd > 0){

        Systemoutprintln("成功插入第"+i+"条数据");

       }

        

      }

      //Systemoutprintln("SIM卡号:"+simNumber+",序列号:"+termSeqId);

     }

     

     //以下代码为写入新的EXCEL,这里不使用,所以注释

     /

     

     //利用已经创建的Excel工作薄创建新的可写入的Excel工作薄

     jxlwriteWritableWorkbook wwb = WorkbookcreateWorkbook(new File("D://Book2xls"),rwb);

     //读取第一张工作表

     jxlwriteWritableSheet ws = wwbgetSheet(0);

   

     //获取第一个单元格对象

     jxlwriteWritableCell wc = wsgetWritableCell(0, 0);

     //决断单元格的类型,做出相应的转化

     if (wcgetType() == CellTypeLABEL) {

      Label l = (Label) wc;

      lsetString("The value has been modified");

     }

     //写入Excel对象

     wwbwrite();

     wwbclose();

      /

    }catch(Exception e){

     eprintStackTrace();

    }

    finally{

     // *** 作完成时,关闭对象,翻译占用的内存空间

     rwbclose();

   

    }

    //

}

  }catch(Exception e){

   eprintStackTrace();

  }

 }

 public static void main(String args[]){

  DbPool dbPool = new DbPool("dbConncfg");//连接数据库

  SimUpdate simUpdate = new SimUpdate("zfz_simxls");

  simUpdateupdateDb();

  

 }

  

}

我只用了读取XLS,写入没试,应该没问题吧,你把注释了的拿 来试一下吧

注意引入的都是poi的包,使用Cell,excel2003的xls对应是HSSFCell,而之后的xlsx对应的则是XSSFCell,但是他们都继承于Cell,所以使用Cell就可以使用两种格式的excel导入了,下面解决excel中数据的各种格式

[java] view plaincopy

//读取excel

try {

requestsetCharacterEncoding("gbk");

responsesetContentType("text/html;charset=gbk");

// 1 创建工厂类

DiskFileItemFactory factory = new DiskFileItemFactory();

// 2 创建FileUpload对象

ServletFileUpload upload = new ServletFileUpload(factory);

// 3 判断是否是上传表单

// boolean b = uploadisMultipartContent(request);

// 设置上传文件最大值

uploadsetSizeMax(25 1024 1024);

// 是文件上传表单

// 4 解析request,获得FileItem项

List<FileItem> fileitems = uploadparseRequest(request);

// 5 遍历集合

for (FileItem item : fileitems) {

// 判断是不是普通字段

if (!itemisFormField()) {

// 获得流,读取数据写入文件

InputStream in = itemgetInputStream();

Workbook book = createWorkBook(in,itemgetName());

// 获得第一个工作表对象

Sheet sheet = bookgetSheetAt(0);

if(0==sheetgetLastRowNum()){

//如果没有数据

requestsetAttribute("message", "excel的sheet0中不存在数据");

requestgetRequestDispatcher("/cc/util/excelToDatajsp")forward(request, response);

}

// 第一行为标题,从第二行开始录入

for (int i = 1; i <= sheetgetLastRowNum(); i++) {

//标题行,用来对比方便得到数据

Row titleRow = sheetgetRow(0);

//数据行

Row row = sheetgetRow(i);

//获得值

String value_temp= thisgetValue((Cell) rowgetCell(2));

}

}

}

} catch (Exception e) {

eprintStackTrace();

message="导入失败<br/>"+message;

requestsetAttribute("message",message);

requestgetRequestDispatcher("/cc/util/excelToDatajsp")forward(request, response);

}

参考下面方法:

import javaioFileInputStream;­

import javaioFileNotFoundException;­

import javaioIOException;­

import orgapachecommonsloggingLog;­

import orgapachecommonsloggingLogFactory;­

import orgapachepoihssfusermodelHSSFCell;­

import orgapachepoihssfusermodelHSSFRow;­

import orgapachepoihssfusermodelHSSFSheet;­

import orgapachepoihssfusermodelHSSFWorkbook;­

public class TestExcel {­

//记录类的输出信息­

static Log log = LogFactorygetLog(TestExcelclass); ­

//获取Excel文档的路径­

public static String filePath = "D://excelxls";­

public static void main(String[] args) {­

try {­

// 创建对Excel工作簿文件的引用­

HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath));­

// 在Excel文档中,第一张工作表的缺省索引是0

// 其语句为:HSSFSheet sheet = workbookgetSheetAt(0);­

HSSFSheet sheet = wookbookgetSheet("Sheet1");­

//获取到Excel文件中的所有行数­

int rows = sheetgetPhysicalNumberOfRows();

//遍历行­

for (int i = 0; i < rows; i++) {­

// 读取左上端单元格­

HSSFRow row = sheetgetRow(i);­

// 行不为空­

if (row != null) {­

//获取到Excel文件中的所有的列­

int cells = rowgetPhysicalNumberOfCells();­

String value = ""; ­

//遍历列­

for (int j = 0; j < cells; j++) {­

//获取到列的值­

HSSFCell cell = rowgetCell(j);­

if (cell != null) {­

switch (cellgetCellType()) {­

case HSSFCellCELL_TYPE_FORMULA:­

break;­

case HSSFCellCELL_TYPE_NUMERIC:­

value += cellgetNumericCellValue() + ","; ­

break; ­

case HSSFCellCELL_TYPE_STRING:­

value += cellgetStringCellValue() + ",";­

break;­

default:­

value += "0";­

break;­

}

// 将数据插入到mysql数据库中­

String[] val = valuesplit(",");­

TestEntity entity = new TestEntity();­

entitysetNum1(val[0]);­

entitysetNum2(val[1]);­

entitysetNum3(val[2]);­

entitysetNum4(val[3]);­

entitysetNum5(val[4]);­

entitysetNum6(val[5]);­

TestMethod method = new TestMethod();­

methodAdd(entity);­

} catch (FileNotFoundException e) {­

eprintStackTrace();­

} catch (IOException e) {­

eprintStackTrace();­

<% if request("action")<>"do" then%>

<form action="" method="post">

<input type="file" name="exname" />

<input name="action" type="hidden" value="do" />

<input type="submit" name="Submit" value="提交" />

</form>

<%

else

dim exname

exname=request("exname")

Dim cn,oConn,connstr

'打开XLS

Set cn = ServerCreateObject("ADODBConnection")

cnProvider = "MicrosoftJetOLEDB40 "

cnConnectionString = "Data Source=" & exname & ";" & _

"Extended Properties=Excel 80;"

cnOpen

'打开MDB

connstr="DBQ="+serverMapPath("data1mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (mdb)};"

set oConn=serverCreateObject("ADODBCONNECTION")

oConnopen connstr

'读取数据

set rsRead=serverCreateObject("ADODBRecordset")

rsReadOpen "select from [Sheet1$]",cn,1,1

%>

<table width="256" height="108" border="1" bordercolor="#FFCCCC">

<tr>

<td>用户名</td>

<td>密码</td>

</tr>

<%do until rsReadEOF

'写入数据库

oConnExecute("Insert into users(userid,password)Values('"& rsReadFields("userid")&"','" &rsReadFields("password") & "')" )

%>

<tr>

<td><input name="" type="text" VALUE="<%=rsreadfields("userid")%>"/></td>

<td><input name="" type="text" VALUE="<%=rsreadfields("password")%>"/></td>

</tr>

<%

rsReadMoveNext

loop

%>

</table>

<%end if %>

EXCEL数据库的结构要和目标数据库ACCESS的结构要对应

1 要正确的将Web客户端的Excel文件导入到服务器的数据库中,需要将客户端的Excel文件上传到服务器上。可以使用FileUpload控件完成。 2 Excel文件上传到服务器指定的目录中,这里假设是该站点的upfiles目录中。 3 使用SQL语句从upfiles目录中

以上就是关于如何用JAVA将数据库中的数据导入到excel表格全部的内容,包括:如何用JAVA将数据库中的数据导入到excel表格、java利用poi技术导入批量excel数据,并且分段存入数据库怎么解决、用java怎么将excel表格数据导入到mysql数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9773018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存