java导入导出excel是怎么实现的
前提:本人的系统为Ubuntu 13.10 64位系统。
本篇是我在配置好环境后一段时间写的,所以操作上可能会有也错误,因此仅供参考。
搜索在线显示office和pdf,最常见的方法就是把都转为swf,然后通过FlexPaper显示。
这个方法有缺点,FlexPaper不支持所有浏览器(我只能在chrome中使用,firefox要进行设置)我用的系统是Ubuntu 13.10 64位一下所提到的软件,我都会在附件中分享一、openoffice安装下载附件中的Apache_OpenOffice_incubating_3.4.1_Linux_x86-64_install-rpm_zh-CN,解压,安装RPMS里面的所有deb包,然后按炸ungRPMS/desktop-integration 里面的openoffice.org3.4-redhat-menus_3.4-9594_all.deb。
假如从网上下载下来的openoffice里面全市rmp包的话需要自己通过alien转换成deb(附件中的是我自己转换过的)安装完成后就可以运行了soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard网上提示使用soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard &的是后台运行运行以后可以通过 netstat -ano | grep 8100 查看时候运行,上面的命令是在8100运行oppenoffice网上还说要安装OpenOffice SDK3.3这个东东,我没有装也可以转换二、offie转pdf下载附件中的jodconverter-2.2.2,通过命令java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar XXX.docx XXX.pdf转换office为pdf三、安装freetype-2.4.6和jpeg-8c不安装这两个的话是没有办法编译出swftools中的pdf2swf的安装方法是进入目录,然后./configuremakemake install四、添加字体下载附件中的chinese-simplified(里面已经添加了部分字体),解压,放到/usr/local/share/xpdf/中,如果没有xpdf文件夹就新建一个。
五、安装swftools下载附件中的swftools-2013-04-09-1007,同样./configuremakemake install就可以了,运行psf2swf如果help提示的话表示安装成功运行命令pdf2swf -o XXX.swf -T -z -t -f XXX.pdf -s languagedir=/usr/local/share/xpdf/chinese-simplified -s flashversion=9可以把pdf转换成swf了。
至此完毕所有附件附件:http://pan.baidu.com/s/1hq7hU2g
如何用JAVA将数据库中的数据导入到excel表格
展开全部 import java.io.*;import java.text.SimpleDateFormat;import java.util.*;import java.sql.*;import java.util.Date;import java.util.HashMap;import java.util.Map;import jxl.*;public class SimUpdate { private String fileName; public ZfzSimUpdate(String fileName){ this.fileName = 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 = sdf.format(nd); return rid; } public String getSeqNumber(String tableName) { if(tableName == null || "".equals(tableName)) tableName = "GENERY"; Integer it; // noinspection SynchronizeOnNonFinalField synchronized(tNames){ it = (Integer)tNames.get(tableName); if(it == null){ it = new Integer(100); tNames.put(tableName, it); }else{ if(it.intValue() > 998) it = new Integer(100); else it = new Integer(1 + it.intValue()); tNames.put(tableName, it); } } return getDtime() + String.valueOf(it); } private void updateDb(){ try{ Connection conn = DbPool.connectDB(); if(conn != null){ Statement stmt = conn.createStatement(); /**********************************************/ jxl.Workbook rwb = null; try{ //构建Workbook对象 只读Workbook对象 //直接从本地文件创建Workbook //从输入流创建Workbook InputStream is = new FileInputStream(fileName); rwb = Workbook.getWorkbook(is); //Sheet(术语:工作表)就是Excel表格左下角的Sheet1,Sheet2,Sheet3但在程序中 //Sheet的下标是从0开始的 //获取第一张Sheet表 Sheet rs = rwb.getSheet(0); //获取Sheet表中所包含的总列数 int rsColumns = rs.getColumns(); //获取Sheet表中所包含的总行数 int rsRows = rs.getRows(); //获取指这下单元格的对象引用 String simNumber = "",termSeqId = ""; //指定SIM卡号及序列号 for(int i=0;i 0){ System.out.println("成功插入第"+i+"条数据"); } } //System.out.println("SIM卡号:"+simNumber+",序列号:"+termSeqId); } //以下代码为写入新的EXCEL,这里不使用,所以注释 /* //利用已经创建的Excel工作薄创建新的可写入的Excel工作薄 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://Book2.xls"),rwb); //读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0); //获取第一个单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(0, 0); //决断单元格的类型,做出相应的转化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString("The value has been modified."); } //写入Excel对象 wwb.write(); wwb.close(); */ }catch(Exception e){ e.printStackTrace(); } finally{ //操作完成时,关闭对象,翻译占用的内存空间 rwb.close(); } /*********************************************/} }catch(Exception e){ e.printStackTrace(); } } public static void main(String args[]){ DbPool dbPool = new DbPool("dbConn.cfg");//连接数据库 SimUpdate simUpdate = new SimUpdate("zfz_sim.xls"); simUpdate.updateDb(); }}我只用了读取XLS,写入没试,应该没问题吧,你把注释了的拿 来试一下吧
Java如何解决Excel导入文件时科学计数问题
展开全部有的时候,系统需要从Excel导入数据,可是数据有时会自动转成科学计数法,下面使用Java解决。
import java.text.*;public class TestNum{public static void main(String[] args){TestNum is = new TestNum();is.test();}public void test(){double num = 1.11111111111111E+27;System.out.println("num= "+num);NumberFormat formatter = NumberFormat.getNumberInstance();//设置小数位数,这里我不需要,所以设置为0formatter.setMaximumFractionDigits(0);String str = formatter.format(num);System.out.println("str= "+str);//通过分隔符","分隔String[] str2 = str.split(",");StringBuffer buffer = new StringBuffer();for(int i=0;ibuffer.append(str2[i]);}String result = buffer.toString();System.out.println("result= "+result);}}//文件输入样式num= 1.11111111111111E27str= 1,111,111,111,111,110,000,000,000,000result= 11111111111111100000000000001.11111111111111E27-------------------------------------------------------上面用的是一般的方法,如果确定输入类型,比如你以double输入,可以采用相对的子类,NumberFormat df = new DecimalFormat("#0");String str3 = df.format(num);就是也是一种解决办法。
如何用Java实现将word里的表格数据写入到excel中去
展开全部 common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件下面先介绍上传文件到服务器(多文件上传):import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;import java.util.regex.*;import org.apache.commons.fileupload.*;public class upload extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=utf-8"; //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out=response.getWriter(); try { DiskFileUpload fu = new DiskFileUpload(); // 设置允许用户上传文件大小,单位:字节,这里设为2m fu.setSizeMax(2*1024*1024); // 设置最多只允许在内存中存储的数据,单位:字节 fu.setSizeThreshold(4096); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录 fu.setRepositoryPath("c://windows//temp"); //开始读取上传信息 List fileItems = fu.parseRequest(request); // 依次处理每个上传的文件 Iterator iter = fileItems.iterator();//正则匹配,过滤路径取文件名 String regExp=".+////(.+)$";//过滤掉的文件类型String[] errorType={".exe",".com",".cgi",".asp"}; Pattern p = Pattern.compile(regExp); while (iter.hasNext()) { FileItem item = (FileItem)iter.next(); //忽略其他不是文件域的所有表单信息 if (!item.isFormField()) { String name = item.getName(); long size = item.getSize(); if((name==null||name.equals("")) && size==0) continue; Matcher m = p.matcher(name); boolean result = m.find(); if (result){ for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){ if (m.group(1).endsWith(errorType[temp])){ throw new IOException(name+": wrong type"); } } try{//保存上传的文件到指定的目录//在下文中上传文件至数据库时,将对这里改写 item.write(new File("d://" + m.group(1)));out.print(name+" "+size+""); } catch(Exception e){ out.println(e); }} else { throw new IOException("fail to upload"); } } }} catch (IOException e){ out.println(e); } catch (FileUploadException e){ out.println(e); } }}现在介绍上传文件到服务器,下面只写出相关代码:以sql2000为例,表结构如下:字段名:name filecode类型: varchar image数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");代码如下:。
。
。
。
。
。
try{ 这段代码如果不去掉,将一同写入到服务器中 //item.write(new File("d://" + m.group(1))); int byteread=0; //读取输入流,也就是上传的文件内容 InputStream inStream=item.getInputStream(); pstmt.setString(1,m.group(1)); pstmt.setBinaryStream(2,inStream,(int)size); pstmt.executeUpdate(); inStream.close();out.println(name+" "+size+" "); }。
。
。
。
。
。
这样就实现了上传文件至数据库。
怎用用java导入、导入word形式的考试题目?
使用java中的io进行读取BufferedReader bufferedReader = null;File file = new File("文档地址+文档名.docx");if(!file.exists()){System.out.println("文件不存在");} else {bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "读取的字符格式(UTF-8或GBK)"));String lineText = null;while((lineText = bufferedReader.readLine()) != null){if (linText != null && !lineText.eq("")){System.out.println("一次读取一行,一行内容为:" + lineText);
java程序将一张多个sheet的Excel文档,导入数据库中
Workbook excelWB = null;excelWB = new XSSFWorkbook(excelFile);oneSheet = excelWB.getSheetAt(0);oneRow = oneSheet.getRow(rowNum); if (oneRow == null) { continue; }// 获取第几列对象 oneCell = oneRow.getCell(1); if (oneCell == null) { continue; } switch (oneCell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: System.out.println(oneCell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(oneCell.getCellFormula()); break; case HSSFCell.CELL_TYPE_NUMERIC: HSSFDataFormatter dataFormatter = new HSSFDataFormatter(); String cellFormatted = dataFormatter.formatCellValue(oneCell);System.out.println( cellFormatted ); break; case HSSFCell.CELL_TYPE_ERROR: break; }将读取到的value处理下insert到表中即可...
转载请注明出处51数据库 » java word 导入excel