exceltoxmljava
㈠ java开发怎么导入导出excel里面信息内容
publicclassExcelExport{
/**
*默认每个sheet页最多显示的行数
*/
privatestaticfinalintsheet_rows=50000;
/**
*导出Excel文件
*
*@paramtitleList
*表头信息
*@paramdataList
*表格数据
*@paramfileName
*导出文件完整名称demo.xls
*@paramrequest
*@paramresponse
*@throwsIOException
*/
(List<String>titleList,
List<List<String>>dataList,StringfileName,
HttpServletRequestrequest,HttpServletResponseresponse)
throwsIOException{
HSSFWorkbookworkBook=exportDataToExcel(titleList,dataList);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("UTF-8");
fileName=encodeFilename(fileName,request);
response.setHeader("Content-disposition","attachment;filename="+fileName);
workBook.write(response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
(Stringfilename,HttpServletRequestrequest){
Stringagent=request.getHeader("USER-AGENT");
try{
if((agent!=null)&&(0<=agent.indexOf("Firefox"))){
returnMimeUtility.encodeText(filename,"UTF-8","B");
}elseif((agent!=null)&&(0<=agent.indexOf("Chrome"))){
returnfilename=newString(filename.getBytes(),"ISO8859-1");
}
else{
if(agent!=null){
StringnewFileName=URLEncoder.encode(filename,"UTF-8");
newFileName=StringUtils.replace(newFileName,"+","%20");
if(newFileName.length()>150){
newFileName=newString(filename.getBytes("GB2312"),
"ISO8859-1");
newFileName=StringUtils.replace(newFileName,"",
"%20");
}
returnnewFileName;
}
}
}catch(Exceptionex){
returnfilename;
}
returnfilename;
}
(List<String>titleList,List<List<String>>dataList){
/*1.创建一个Excel文件*/
HSSFWorkbookworkbook=newHSSFWorkbook();
/*2.创建Excel的一个Sheet*/
HSSFSheetsheet=workbook.createSheet();
/*3.创建表头冻结*/
sheet.createFreezePane(0,1);
/*4.设置列宽*/
for(inti=0;i<titleList.size();i++){
sheet.setColumnWidth(i,5000);
}
/*5.表头字体*/
HSSFFontheadfont=workbook.createFont();
headfont.setFontName("宋体");
headfont.setFontHeightInPoints((short)12);//字体大小
headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
/*6.表头样式*/
HSSFCellStyleheadstyle=workbook.createCellStyle();
headstyle.setFont(headfont);
headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
//设置背景色为蓝色
headstyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);
headstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
/*7.普通单元格字体*/
HSSFFontfont=workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short)12);
/*8.普通单元格样式*/
HSSFCellStylestyle=workbook.createCellStyle();
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
/*9.拼装表头*/
Iterator<String>titleRowIterator=titleList.iterator();
intcolumnIndex=0;
HSSFRowrow=sheet.createRow(0);
while(titleRowIterator.hasNext()){
StringcellValue=titleRowIterator.next();
HSSFCellcell=row.createCell(columnIndex);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(cellValue);
cell.setCellStyle(headstyle);
columnIndex++;
cell=null;
}
/*10.组织表数据*/
Iterator<List<String>>rowIterator=dataList.iterator();
introwIndex=1;
while(rowIterator.hasNext()){
List<String>columnList=rowIterator.next();
row=sheet.createRow(rowIndex);
Iterator<String>columnIterator=columnList.iterator();
columnIndex=0;
while(columnIterator.hasNext()){
StringcellValue=columnIterator.next();
HSSFCellcell=row.createCell(columnIndex);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(cellValue);
cell.setCellStyle(style);
cell=null;
columnIndex++;
}
row=null;
rowIndex++;
}
returnworkbook;
}
/**
*重载导出数据到Excel中
*@paramtitleList表头
*@paramdataList表数据
*@paramamount每个sheet页显示行数
*@return
*/
(List<String>titleList,List<List<String>>dataList,intamount){
/*1.创建一个Excel文件*/
HSSFWorkbookworkbook=newHSSFWorkbook();
//校验传入的参数
if(titleList==null){
titleList=newArrayList<String>();
}
//无数据直接返回
if(dataList==null||dataList.size()==0){
returnworkbook;
}
//传入数据不正确,按照默认条数显示
if(amount>65535||amount<=0){
amount=sheet_rows;
}
//获取sheet页的数量
introw_num=0;
inty=dataList.size()%amount;
if(y==0){
row_num=dataList.size()/amount;
}else{
row_num=dataList.size()/amount+1;
}
/*表头字体*/
HSSFFontheadfont=workbook.createFont();
headfont.setFontName("宋体");
headfont.setFontHeightInPoints((short)12);//字体大小
headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
/*表头样式*/
HSSFCellStyleheadstyle=workbook.createCellStyle();
headstyle.setFont(headfont);
headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
//设置背景色为蓝色
headstyle.setFillForegroundColor(HSSFColor.LIGHT_BLUE.index);
headstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
/*普通单元格字体*/
HSSFFontfont=workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short)12);
/*普通单元格样式*/
HSSFCellStylestyle=workbook.createCellStyle();
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
//循环写入每个sheet页
for(inti=0;i<row_num;i++){
/*创建Excel的一个Sheet*/
HSSFSheetsheet=workbook.createSheet();
/*创建表头冻结*/
sheet.createFreezePane(0,1);
/*设置列宽*/
for(intt=0;t<titleList.size();t++){
sheet.setColumnWidth(t,5000);
}
/*拼装表头*/
Iterator<String>titleRowIterator=titleList.iterator();
intcolumnIndex=0;
HSSFRowrow=sheet.createRow(0);
while(titleRowIterator.hasNext()){
StringcellValue=titleRowIterator.next();
HSSFCellcell=row.createCell(columnIndex);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(cellValue);
cell.setCellStyle(headstyle);
columnIndex++;
cell=null;
}
/*组织表数据*/
introwIndex=1;
for(intj=amount*i;(j<amount*(i+1)&&j<dataList.size());j++){
List<String>columnList=dataList.get(j);
row=sheet.createRow(rowIndex);
Iterator<String>columnIterator=columnList.iterator();
columnIndex=0;
while(columnIterator.hasNext()){
StringcellValue=columnIterator.next();
HSSFCellcell=row.createCell(columnIndex);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(cellValue);
cell.setCellStyle(style);
cell=null;
columnIndex++;
}
row=null;
rowIndex++;
}
}
returnworkbook;
}
/**
*重载导出Excel功能,新增一项amount每个sheet导出记录行数
*@paramtitleList
*@paramdataList
*@paramfileName
*@paramamount行数如果小于等于0或大于65535则按照默认显示
*@paramrequest
*@paramresponse
*@throwsIOException
*/
(List<String>titleList,
List<List<String>>dataList,StringfileName,intamount,
HttpServletRequestrequest,HttpServletResponseresponse)
throwsIOException{
HSSFWorkbookworkBook=exportDataToExcel(titleList,dataList,amount);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("UTF-8");
fileName=encodeFilename(fileName,request);
response.setHeader("Content-disposition","attachment;filename="+fileName);
workBook.write(response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
}
说明:main方法里的第一个参数为要导出的表头信息,
第二个参数为数据信息,
第三个参数设置文件名,设置好以后直接调用就可以导出Excle了;
导入就是把文件存到服务器,可用Mogodb等数据库存储,以下是读取已存根据存储的文件id解析Excle数据的大致过程:
POIFSFileSystemfs=null;
if(!StringUtils.isBlank(fileId)){
fs=newPOIFSFileSystem(newByteArrayInputStream(
//传入对应的文件对象
MongoFileUtil.readFile(fileId)));
}
//构造XSSFWorkbook对象,filePath传入文件路径
HSSFWorkbookxwb=newHSSFWorkbook(fs);
//读取第一个sheet
HSSFSheetsheet=xwb.getSheetAt(0);
for(inti=sheet.getFirstRowNum()+1;i<sheet.getPhysicalNumberOfRows();i++){
//解析每行的数据
HSSFRowsingleRow=sheet.getRow(i);
//解析每个单元格数据
singleRow.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
StringcellValue=singleRow.getCell(0).getStringCellValue();
}
㈡ java编程将文字转为对应数字然后做二维码存入excel
这东西可以自己查阅资料啊。给你一个思路,首先把excel转化为xml文件保存(或者转为数据库),然后读取xml。
再用码此前下面这个类转为二维码。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package qrcode;
import com.swetake.util.Qrcode;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* Created with IntelliJ IDEA.
* Date: 10/9/13
* Time: 11:31 AM
*/
public class QRCodeTest {
private static int DEFAULT_WIDTH;
private static int UNIT_WIDTH = 10;
public static void createImg(){
Qrcode qrcode=new Qrcode();
//错误修正容量
//L水平 7%的字码可被扒键修正
//M水平 15%的字码可被修正
//Q水平 25%的字码可被修正
//H水平 30%的字码可被修正
//QR码有容错能力,QR码图形如果有破损,仍然可以被机器读取内容,最高可以到7%~30%面积破损仍可被读取。
//相对而言,容错率愈高,QR码图形面积愈大。所以一般折衷使用15%容错能力。
qrcode.setQrcodeErrorCorrect('M');/* L','M','Q','H' */
qrcode.setQrcodeEncodeMode('B');/* "N","A" or other */
qrcode.setQrcodeVersion(3);/* 0-20 */
String testString = "这里是要迟清转化的文字";
byte[] buff = null;
try {
buff = testString.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
boolean[][] bRect = qrcode.calQrcode(buff);
DEFAULT_WIDTH = bRect.length * UNIT_WIDTH;
BufferedImage bi = new BufferedImage(DEFAULT_WIDTH, DEFAULT_WIDTH, BufferedImage.TYPE_INT_RGB);
// int unitWidth = DEFAULT_WIDTH / bRect.length;
// createGraphics
Graphics2D g = bi.createGraphics();
// set background
g.setBackground(Color.WHITE);
g.clearRect(0, 0, DEFAULT_WIDTH, DEFAULT_WIDTH);
g.setColor(Color.BLACK);
if (buff.length>0 && buff.length <123){
for (int i=0;i<bRect.length;i++){
for (int j=0;j<bRect.length;j++){
if (bRect[j][i]) {
g.fillRect(j*UNIT_WIDTH, i*UNIT_WIDTH, UNIT_WIDTH-1, UNIT_WIDTH-1);
}
}
}
}
g.dispose();
bi.flush();
String FilePath="QRCode.png";
File f = new File(FilePath);
try {
ImageIO.write(bi, "png", f);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Create QRCode finished!");
}
}
㈢ java读取excel文件运行问题,用的是jxl包。运行时选择的是Demo。不知道怎么运行,求高手指点。
//尺弊缓Excel 数据 比对 系统
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Colour;
import jxl.format.UnderlineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ExcelContrast {
static String file1 = "d://java//1.xls";
static String file2 = "d://java//2.xls";
static HashMap<Integer, String> hsMap1 = new HashMap<Integer, String>();
static HashMap<Integer, String> hsMap2 = new HashMap<Integer, String>();
static int found = 0;
public static void main(String[] args) {
System.out.println("欢迎使用Excel数据比对系统!");
System.out.println("Excel数据比对系统 开始运行。。。");
System.out.println("读取" + file1);
ReadExcelToHashMap(file1, hsMap1);
// System.out.println(hsMap1.size());
System.out.println("读取陵模" + file1);
ReadExcelToHashMap(file2, hsMap2);
// System.out.println(hsMap2.size());
// System.out.println(hsMap1.values());
// System.out.println(hsMap2.values());
System.out.println("开始比对。。。");
server();
System.out.println("成功比对出" + found + "条不同数据");
System.out.println("Excel数据比对系统 正常退出。。。");
}
private static void server() {
int i = 0;
System.out.println("遍历比对" + file1);
while (i < hsMap1.size()) {
if (hsMap2.containsValue(hsMap1.get(i))) {
} else {
System.out.println(file1 + "卜源 第" + (i + 1) + "行 "
+ hsMap1.get(i));
UpdateExcel(i, 0, hsMap1.get(i), file1);
UpdateExcel(i, 1, "稽核", file1);
found++;
}
i++;
}
i = 0;
System.out.println("遍历比对" + file2);
while (i < hsMap2.size()) {
if (hsMap1.containsValue(hsMap2.get(i))) {
} else {
System.out.println(file2 + " 第" + (i + 1) + "行 "
+ hsMap2.get(i));
UpdateExcel(i, 0, hsMap2.get(i), file2);
UpdateExcel(i, 1, "稽核", file2);
found++;
}
i++;
}
}
private static void ReadExcelToHashMap(String file,
HashMap<Integer, String> hsmap) {
try {
Workbook book = Workbook.getWorkbook(new File(file));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
// 得到第一列第一行的单元格
int i = 0;
while (!sheet.getCell(0, i).getContents().equalsIgnoreCase("")) {
hsmap.put(i, sheet.getCell(0, i).getContents());
i++;
}
book.close();
} catch (FileNotFoundException e) {
System.out.println("系统找不到指定的文件:" + file);
System.exit(0);
} catch ( e) {
} catch (Exception e) {
e.printStackTrace();
}
}
static void test_hash() {
HashMap<Integer, String> hsMap = new HashMap<Integer, String>();
hsMap.put(3, "Value3");
hsMap.put(2, "Value2");
System.out.println(hsMap.get(2));
System.out.println(hsMap.values());
System.out.println(hsMap.containsKey(1));
System.out.println(hsMap.containsValue("Value3"));
System.out.println(hsMap.size());
}
static void UpdateExcel(int i, int j, String cell, String file) {
try {
// Excel获得文件
Workbook wb = Workbook.getWorkbook(new File(file));
// 打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book = Workbook.createWorkbook(new File(file), wb);
// 添加一个工作表
WritableSheet ws = book.getSheet(0);
// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
WritableFont font = new WritableFont(WritableFont.ARIAL, 15,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.RED);
WritableCellFormat cFormat = new WritableCellFormat(font);
Label labelC = new Label(j, i, cell, cFormat);
try {
// 将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (Exception e) {
e.printStackTrace();
}
book.write();
book.close();
} catch (FileNotFoundException e) {
System.out.println("另一个程序正在使用此文件,进程无法访问。请您关闭EXECL");
System.exit(0);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
㈣ java将数据导出excel计算其文件大小
热门频道
首页
博客
研修院
VIP
APP
问答
下载
社区
推荐频道
活动
招聘
专题
打开CSDN APP
Copyright © 1999-2020, CSDN.NET, All Rights Reserved
打开APP
大数据导出败租excel大小限制_java 导出Excel 大数据量,自己经验总结! 原创
2020-12-19 01:58:16
weixin_39655377
码龄5年
关注
分析导出简腔实现代码,XLSX支持:
/*** 生成XLSX,2007版本的excel,每个sheet无6.5W的行数限制,但是到了一定数量,可能内存溢出,
* 次方法适合在预计10W以下的数据导出时使用,本机测试,14W可以导出。列数量在8列左右
*
*@paramfileOut
* 输出流
*@paramsheetMap
* 要设置的数据信息
*@throwssqlException*/
public static voidcreateXSLXByResultSet(OutputStream fileOut, WriteXLSBean... beans)throwsSQLException {try{//重点 Workbook
Workbook wb = newXSSFWorkbook();for (int i = 0, len = beans.length; i < len; i++) {
WriteXLSBean xlsBean=beans[i];
Sheet sheet=wb.createSheet(xlsBean.getSheetName());
ResultSet rs=xlsBean.getRs();
ResultSetMetaData rsmd=rs.getMetaData();
TypeHandlerRegistry tr=BeanContext.tr;
Map th =xlsBean.getTh();int index = 0;while(rs.next()) {long t1 =System.currentTimeMillis();
org.apache.poi.ss.usermodel.Row row=sheet
.createRow(index);for (int j = 0, numberOfColumns = rsmd.getColumnCount(); j < numberOfColumns; j++) {
String key= rsmd.getColumnLabel(j + 1).toLowerCase();if(th.containsKey(key)) {
TypeHandler> type =tr.getTypeHandler(JdbcType
.forCode(rsmd.getColumnType(j+ 1)));
Object obj=type.getResult(rs, key);
row.createCell(j).setCellValue(obj== null ? "": obj.toString());
}
}
System.out.println(index+ " :"
+ (System.currentTimeMillis() -t1));
index++;
}
}//重点 Workbook
wb.write(fileOut);
}catch(IOException e) {
e.printStackTrace();throw new ServiceRunTimeException("生产xls文档错误", e);
}finally{
}
}
在上面 标注了重点的两处,分别是:
1.构建一个Excel对象
2.将该对象写入一个OutPutStream
而在构建过程中,没有地方写入OutPutSteam ,也就是说必须在内存中构建整个 Excel,才能进行写出操作,在大数据量情况下,这样将导致所有数据加载到内存中,而不能输出,导致最后 内存溢出。
根据运行环境不用,可能内存溢出的 情况不同
根据情况,如果数据量达到10W以上,建议使用
1、多个Excel,每个Excel一个Sheet,因为所有Sheet都是Workbook的组成部分拦枯衫。如果不分多个Excel,即使分Sheet也没用,
2、每个Excel中列数适中,比如: 5W行每个Excel档,实现分多次导出和分页查询原理一样
3、对多个Excel导出到一个临时目录,并通过程序压缩,然后提供给客户下载
2003版通过数据库结果存到List中,然后进行生产:Table 就是List Row 是Map
/*** 生产xls,2003版本的excel,每个sheet有6.5W的行数限制
*
*@paramfileOut
* 输出流,未关闭
*@paramsheetMap
* 要导出的数据信息*/
public static void createXSLByMap(OutputStream fileOut, Map>>sheetMap) {try{
HSSFWorkbook wb= newHSSFWorkbook();
Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator
.hasNext();) {
String SheetKey=iterator.next();
Sheet sheet=wb.createSheet(SheetKey);
List> sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i < len; i++) {
Map cellMap =sheetRows.get(i);
Set cellSet =cellMap.keySet();
org.apache.poi.ss.usermodel.Row row=sheet.createRow(i);int j = 0;for (Iterator iterCell =cellSet.iterator(); iterCell
.hasNext(); j++) {
String cellKey=iterCell.next();
Object obj=cellMap.get(cellKey);
row.createCell(j).setCellValue(obj== null ? "": obj.toString());
}
}
}
wb.write(fileOut);
}catch(IOException e) {
e.printStackTrace();throw new ServiceRunTimeException("生产xls文档错误", e);
}finally{
}
}
新版本 POI+office 2007版本excel可以导出几十万条而不内存溢出,详细见:
导出大量数据到 excel 的 xlsx文件
static String src="SFGHJKJGHFERTUIO";
public static void main(String[] args) throwsThrowable {
SXSSFWorkbook wb = new SXSSFWorkbook(100); //这里100是在内存中的数量,如果大于此数量时,会写到硬盘,以避免在内存导致内存溢出
Sheet sh =wb.createSheet();
for (int rownum = 0; rownum < 1000000; rownum++) {
Row row =sh.createRow(rownum);
for (int cellnum = 0; cellnum < 10; cellnum++) {
Cell cell =row.createCell(cellnum);
String address = newCellReference(cell).formatAsString();
cell.setCellValue(address+src.substring(rownum%10*10+1, (rownum%10+1)*10));
}
}
File file = new File("F:/aa.xlsx");
file.createNewFile();
FileOutputStream out = newFileOutputStream(file);
wb.write(out);
out.close();
}
内存使用情况:
根据以上前辈经验,自己在结果自身需求考虑,整合出一个工具。解决了excle表.xls格式行数65535行的限制。我实现的形式是导出一张表,里面有多页
(我是已65000为一页)
这里是用反射来使用所有传入进行的实体的属性的值。这里只针对String和基本数据类型。如有自己定义的类型需要自己加上。
packagecom.tommy.fundation.util;importjava.lang.reflect.Field;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;public classRelectUtil {public static List reflectEntity(T model,Class> cals) throwsNoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, SecurityException, NoSuchFieldException{
List list = new ArrayList();
Field[] field= model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组
for(int j=0 ; j
String nam = field[j].getName(); //获取属性的名字
String name =nam;
name= name.substring(0,1).toUpperCase()+name.substring(1);
String type= field[j].getGenericType().toString(); //获取属性的类型
if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名
Method m = model.getClass().getMethod("get"+name);
String value= (String) m.invoke(model); //调用getter方法获取属性值
if(value != null){
list.add(value);
}else{
list.add("");
}
}if(type.equals("class java.lang.Integer")){
Method m= model.getClass().getMethod("get"+name);
Integer value=(Integer) m.invoke(model);if(value != null){
list.add(value);
}else{
list.add("");
}
}if(type.equals("class java.lang.Short")){
Method m= model.getClass().getMethod("get"+name);
Short value=(Short) m.invoke(model);if(value != null){
list.add(value);
}else{
list.add("");
}
}if(type.equals("class java.lang.Double")){
Method m= model.getClass().getMethod("get"+name);
Double value=(Double) m.invoke(model);if(value != null){
list.add(value);
}else{
list.add("");
}
}if(type.equals("class java.lang.Boolean")){
Method m= model.getClass().getMethod("get"+name);
Boolean value=(Boolean) m.invoke(model);if(value != null){
list.add(value);
}else{
list.add("");
}
}if(type.equals("class java.util.Date")){
Method m= model.getClass().getMethod("get"+name);
Date value=(Date) m.invoke(model);if(value != null){
list.add(value);
}else{
list.add("");
}
}
}returnlist;
}
}
下面将是重点实现导出excel表
packagecom.tommy.fundation.util;importjava.io.OutputStream;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importjava.util.Set;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.record.formula.functions.T;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
@SuppressWarnings("hiding")public class ExportExcel{/*** 导出多张excel表,解决xls格式行数65535的限制
*@authorOnlyOne
*@paramresponse
*@paramlist 需要处理的list数据集合
*@throwsException*/@SuppressWarnings("deprecation")public void doExcel(HttpServletResponse response,List list,String fileName) throwsException {
OutputStream os= response.getOutputStream();//获取输出流
response.reset();//设置下载头部信息。Content-disposition为属性名。attachment表示以附件方式下载,如果要在页面中打开,则改为inline。filename为文件名
response.setHeader("Content-disposition", "attachment; filename=excell.xls");
response.setContentType("application/msexcel");
Map> sheetMap =daData(list);
HSSFWorkbook wb= newHSSFWorkbook();
Set keys =sheetMap.keySet();for (Iterator iterator =keys.iterator(); iterator.hasNext();) {
Integer SheetKey=iterator.next();
HSSFSheet sheet= wb.createSheet((fileName+SheetKey).toString());
List sheetRows =sheetMap.get(SheetKey);for (int i = 0, len = sheetRows.size(); i < len; i++) {
T en=(T) sheetRows.get(i);
List dataList = RelectUtil.reflectEntity(en, en.getClass());
HSSFRow row=sheet.createRow(i);
row.createCell(0).setCellValue(String.valueOf(i));for(int m=0; m
row.createCell(m+1).setCellValue(dataList.get(m).toString());
}
}
}
wb.write(os);
}/*** 此方法将数据集合按65000个进行分割成多个子集合
*@authorOnlyOne
*@paramlist 需要处理的list数据集合
*@return
*/
public Map> daData(Listlist){int count = list.size()/65000;int yu = list.size() % 65000;
Map> map = new HashMap>();for (int i = 0; i <= count; i++) {
List subList = new ArrayList();if (i ==count) {
subList= list.subList(i * 65000, 65000 * i +yu);
}else{
subList= list.subList(i * 65000, 65000 * (i + 1)-1);
}
map.put(i, subList);
}returnmap;
}
}
在Java中调用的方式
@RequestMapping(value = "/doExcel", method =RequestMethod.GET)public void doExcel(HttpServletResponse response,HttpServletRequest request) throwsException {
List list =enrolltgService.findAll();new ExportExcel().doExcel(response, list, "黑白淡奶");
}
大功搞成,以后再也不会为了数据量太大而导不出来烦恼了!!!
需要的包 poi-3.2-FINAL-20081019.jar
相关资源:poi读取大文件Excel,使用xml格式解析,速度实测50mb文件13s,可指定...
打开CSDN,阅读体验更佳
POI多线程分表导出百万级大数据量EXCEL导出_Zhuo_chao的博客-CSDN博 ...
由上面可知 Excel 2003及以下是无法实现单sheet百万级的数据。 ApachePOI 简介 Apache POI 是用Java编写的免费开源的跨平台的 JavaAPI,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功...
Java 使用POI导出数据到 excel,单 sheet 和多 sheet__修铁路的的博客...
单sheet 和多 sheet,用到的jar都是一样的,无非就是多创建一个 sheet的问题,以下是需要用到的jar包,在对应模块的pom.xml 中引入即可 <dependency> <groupId>org.apache.poi</groupId> ...
java导出excel超出65533行
业务背景: 列表导出,数据导出超过65533行 解决方案: 1、超出65533行,直接系统提示:本系统支持导出的最大条数为65533行 2、导出模版改为.xlsx,POI导出时用XSSFWorkbook,把所有数据都拿到内存里,可以导出超过65533行,但是上线之后,发现会内存溢出 3、导出模版改为.xlsx,POI导出时用SXSSFWorkbook,每次往内存里放一定的数据,导完之后,刷新,再次...
继续访问
Java的poi导出的excel不能超过256列的解决办法
Java的poi导出的excel不能超过256列的解决办法背景1、现在的情况2、解决办法 背景 1、现在的情况 excel文件名以.xls结尾 这个构造函数中默认采取这个类型 this.type = ExcelType.HSSF; public ExportParams(String title, String sheetName) { this.color = HSSFColorPredefined.WHITE.getIndex(); this.headerColor = HSSFC
继续访问
使用ApachePOI导出excel(多个sheet页)_我是橘子京的博客
2、设置导出excel路径 //导出的文件路径 String filePath="D:\\excel.xls"; 1 2 3、创建excel文件 //创建Excel文件(Workbook) HSSFWorkbook workbook = new HSSFWorkbook(); 1 2 4、设置单元格样式 //设置单元格样式 HSSFCel...
POI3.8 导出大数据excel(50万左右)_咖啡加糖_的博客_poi支持最...
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.streaming.SXSSFWorkbook; ...
最新发布 【JAVA问题解决方案】01.EasyExcel导出数据超过Excel单表上限解决方案
1.了解一下Excel单表最多存储多少行数据(可以存储1048576条数据,1024的平方,2的20次方)。本文是介绍EasyExcel导出数据超过Excel单表上限解决方案。2.知道最多多少行就能以这个数为条件,如果超过则进行分表。3.分表的同时需要对数据进行分割,才能不超过最大限度。实体类(非常简单,为了导出表更快)
继续访问
java实现流输出形式导出数据(使用EasyExcel)并打包为zip包
java实现流输出形式文件下载并打包为zip包 pom.xml文件导入easyexcel <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.0.5</version> </d...
继续访问
...到excel文件(xls格式),附实验结果(单张sheet最多可有65536行)& Fi...
使用POI导出MySQL数据库数据到excel文件(xls格式) 注意事项:单张sheet最多存储65536行!否则报错! Caused by: java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535) !
使用Apache POI导出百万条EXCEL数据_橙乐果果的博客
工作中,有这么一个需求:每天凌晨00:05分定时从数据库导出大于三个月的订单流水信息,保存为excel文件。 Just do it. 1.引入POM依赖 <!-- excel --> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...
Linux下读写文件操作
Linux下读写文件操作 #include<stdio.h> typedef struct Student { int no; char name[10]; int score; }Student; int main(int args,char *argv[]) { //打开文件 FILE *fp=fopen("test.txt","w"); if(fp=NULL) { perror("fopen"); ...
继续访问
Java导出超大Excel文件,防止内存溢出
Java导出超大Excel文件,防止内存溢出1.采用Poi中的SXSSFWorkbook2.maven中引入Poi3.测试过程4.单元测试Java代码5.结论 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Poi中的SXSSFWorkbook 在实现excel导出时,在数据量过大的情况下,总是容易发生内存溢出的情况。可以使用POI提供的 SXSSFWorkbook 类来避免内存溢
继续访问
Apache Poi导出Excel多Sheet页详解!_奥鹏马的博客
apache poi是目前比较常用导出excel的方式。最近想要实现一个导出excel多sheet页的功能。 网上查了一下大多都是针对某个具体对象的导出,不能实现任意对象的导出。现在将自己研究出的代码贴出来,供大家参考。 //注意:此处实现的关键是将...
Apache poi 导出多sheet的excel表格_朋态圈的博客
导出多sheet的excel */public class ApachePoi { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub exportExcel();} @SuppressWarnings("resource") public static String exportExcel...
java导出excel限制大小_解决java poi导出excel2003不能超过65536行的问题
/*** 如果达到50000条数据则重新创建工作表的逻辑*/@Overridepublic void exportExcel(ListformList, ServletOutputStream outputStream){try{//工作表名后面的数字,如表1,表2int i = 0;//记录总行数int rownum = 0;//记录每个sheet的行数int tempnum = 0;//分页条...
继续访问
热门推荐 java poi 导出Excel 超大数据量解决方案
http://blog.csdn.net/qiaoshuai0920/article/details/51800991
继续访问
poi导出excel,实现一个excel中多个sheet(可解决poi导出限制65536的问题...
本文章的excel实现导出多个sheet是在上一篇poi导出的基础上实现的,这么久了,对于上一篇文章的poi也作出过一些优化。 这里我只贴修改了的方法的代码,其余的和上一篇文章的一样。 /** * 导出excel.在一个页面中单独导出Excel ...
基于Apache POI导出(百万级)大数据量Excel的实现_一朵风中摇曳的水仙...
支持单个 excel 的 sheet 导出100w 的数据 ApachePOI操作Excel对象 1.HSSF:操作Excel 2007之前版本(.xls)格式,生成的EXCEL不经过压缩直接导出 2.XSSF:操作Excel 2007及之后版本(.xlsx)格式,内存占用高于HSSF ...
解决POI的XSSFWorkbook导入大excel的内存消耗过大问题
方式1:使用SXSSFWorkbook ,经过测试,这个情况无效,因为本质上SXSSFWorkbook 也是通过XSSFWorkbook来的,他可以解决写出excel的场景,但是解决不了我们这种用户上传且读取excel中的内容的场景 XSSFWorkbook XSSFWorkbook = new XSSFWorkbook(fileInputStream); System.gc(); SXSSFWorkbook SXSSFWorkbook = new SXSS
继续访问
导入导出
原文地址:https://blog.csdn.net/qq_29631809/article/details/72785338 创建流程:(上级为 下级的载体) 1:.创建 工作簿 2.创建 sheet(可以创建多个) 3.创建行 4.创建单元格 接下来 分别说下 工作簿的常用三种形式的区别,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWork...
继续访问
NPOI导出Excel 65536限制
1 #region NPOI 导出excel数据超65535自动分表 2 /// <summary> 3 /// DataTable转换成Excel文档流,并输出到客户端 4 /// </summary> 5 /// <param name="table">...
继续访问
java导出csv文件 为解决导出excel时每个单元格的限制(32767)
此实现方法仅供参考 因为本人导出数据量不大所采取的方法 如数据量大,会到至内存溢出请知晓 在这还提下:导出时内容自己换行 只需在内容前尾各加双引号就行。 如图 1、准备导出工具类 // An highlighted block package com.test; import java.io.BufferedWriter; import java.io.File; import java.io...
继续访问
Excel单元格数据超过32767报错问题处理
java poi 32767
继续访问
SXSSFWorkbook Excel 大量数据导出
注意 SXSSFWorkbook 用于大量数据的导出 SXSSFWorkbook是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel, SXSSFWorkbook专门处理大数据,对于大型excel的创建且不会内存溢出的,就只SXSSFWorkbook了。 它的原理很简单,用硬盘空间换内存(就像hashmap用空间换时间一样)。 SXSSFWorkbook是streami...
继续访问
EXCEL大数据量导出的解决方案
将web页面上显示的报表导出到excel文件里是一种很常见的需求。然而,当数据量较大的情况下,excel本身的支持最多65535行数据的问题便凸显出来。下面就给出大数据量导出到excel的解决方 案。 首先,对于数据超过了65535行的问题,很自然的就会想到将整个数据分块,利用excel的多sheet页的功能,将超出65535行后的数据写入到下一个sheet页中,即通过多sheet页的方式,突破了...
继续访问
几行代码,复杂Excel 导入导出,真心强大!
点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达项目中使用:功能介绍IMPORT1、 ExcelHandle核心处理器;2、 ExcelWorkbookManageexcel所有工作表管理;3、 ExcelInitConfig配置文件初始化;4、 AbstractFileParser文件转换类;alanpoi import有何优势?1、 用户不需要额外引入poi...
继续访问
java中poi导出excel问题总结
java中poi导出excel问题总结
继续访问
java POI导出excel,列数限制在256列
有两篇文章写得比较好的 https://www.oschina.net/code/snippet_1052786_47435 https://www.jianshu.com/p/4c6eec65fdc3
继续访问
apache poi导出excel最大多少个sheet
大数据导出excel大小限制
写评论
评论
收藏
点赞
踩
分享
㈤ 如何用java来将excel文件转化为html文件问题
可以导入spire.xls.jar(只需导入这一个jar即可),直接下载jar包,然后解压将lib文件夹下的jar文件导入java程序;如果创建的是Maven程序的话,需要在pom.xml文件中配置maven路径并指定Free Spire.XLS for Java的依赖,导入,如下配置:
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId> e-iceblue </groupId>
<artifactId>spire.xls</artifactId>
<version>2.2.0</version>
</dependency></dependencies>
完成导入后,参考如下代码将excel转为html:
import com.spire.xls.*;
public class ExcelToHtml {
public static void main(String[] args) {
//加载Excel工作表
Workbook wb = new Workbook();
wb.loadFromFile("test.xlsx");
//获取工作表
Worksheet sheet = wb.getWorksheets().get(0);
//调用方法将Excel保存为HTML
sheet.saveToHtml("ToHtml.html");
}
}
㈥ 如何用java实现xml文件转excel
/**
*
* ExcelXML.java
* IBM_Developer_POI(Excel,Word) */
package com.wds.excelxml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDataFormatter;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import nu.xom.Attribute;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import nu.xom.Serializer;
public class ExcelXML {
public static void main(String[] args) {
excelXML();
}
/**
* 从Excel到XML
* 从XML到Excel
*/
private static void excelXML(){
/*
* 首先创建一个XML文档
* 要创建XML文档,首先创建一个根元素
*/
Element reportRoot=new Element("sheet");
Document xmlReport=new Document(reportRoot);
try {
//读取Excel文件
FileInputStream excelFIS=new FileInputStream("D:\\JavaTest\\Employee_List.xls");
//创建Excel工作表
HSSFWorkbook excelWB=new HSSFWorkbook(excelFIS);
//获得Excel工作簿
HSSFSheet excelSheet=excelWB.getSheetAt(0);
//获得工作簿的行数
int rows=excelSheet.getPhysicalNumberOfRows();
//遍历工作簿的行
for(int rowIndex=0; rowIndex<rows;rowIndex++){
HSSFRow oneRow=excelSheet.getRow(rowIndex);
if(oneRow==null){
continue;
}
//在迭代每一行的时候,创建xml的行元素
Element rowElement=new Element("row");
//获得当前行的单元格数
int cells=oneRow.getPhysicalNumberOfCells();
//遍历行中的每一个单元格
for(int cellIndex=0;cellIndex<cells;cellIndex++){
HSSFCell oneCell=oneRow.getCell(cellIndex);
if(oneCell==null){
continue;
}
//设置元素的默认名称
String elementName="header";
//获得单元格所在列位置
int cellColumnIndex=oneCell.getColumnIndex();
if(rowIndex>0){
elementName=reportRoot.getFirstChildElement("row").getChild(cellColumnIndex).getValue();
}
/*
* 去掉非法字符
*/
elementName = elementName.replaceAll("[\\P{ASCII}]","");
elementName = elementName.replaceAll(" ", "");
Element cellElement = new Element(elementName);
//添加属性和元素
//String attributeValue=oneCell.getCellStyle().getDataFormatString();
//Attribute dataFormatAttribute=new Attribute("dataFormat", attributeValue);
//cellElement.addAttribute(dataFormatAttribute);
/*
* 根据不同的属性添加
*/
Attribute strTypeAttribute=null;
switch (oneCell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
strTypeAttribute=new Attribute("dataType","String");
cellElement.addAttribute(strTypeAttribute);
cellElement.appendChild(oneCell.getStringCellValue());
rowElement.appendChild(cellElement);
break;
case HSSFCell.CELL_TYPE_NUMERIC:
strTypeAttribute=new Attribute("dataType","Numeric");
cellElement.addAttribute(strTypeAttribute);
HSSFDataFormatter dataFormatter=new HSSFDataFormatter();
String cellFormatted=dataFormatter.formatCellValue(oneCell);
cellElement.appendChild(cellFormatted);
rowElement.appendChild(cellElement);
break;
}
}
if(rowElement.getChildCount()>0){
reportRoot.appendChild(rowElement);
}
//System.out.println(xmlReport.toXML());
}
㈦ java 读取excel文件 我需要去读到每一行的每一个数据。 然后操作一番。 最后生成一个XML文件
jxl
package com.cj.fw.xml;
import java.io.File;import java.io.IOException;
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;import jxl.WorkbookSettings;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableCell;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import com.cj.pro.domain.Drilling;
public class DrillingExport {
// 模板文件位置 private final static String TempletFile = "/attachments/template/emergencydrill.xls"; // 数据 private Drilling log = null; private String leixing=null;
/** * 构造函数 */ public DrillingExport( Drilling log,String leixing) { this.log=log; this.leixing=leixing; }
/** * 安全培训日志导出表 * @throws IOException * @throws BiffException * @throws WriteException */ public boolean export(HttpServletRequest request,HttpServletResponse response) throws BiffException, IOException, WriteException { String fileName=""; if("1".equals(leixing)){ fileName="应急演练信息导出表.xls"; }else if("2".equals(leixing)){ fileName="消防演练演练信息导出表.xls"消誉数; } response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-type","application/拿首file"); response.setHeader("Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" )); File file = new File(request.getSession().getServletContext().getRealPath(TempletFile)); WorkbookSettings workbookSettings=new WorkbookSettings(); workbookSettings.setEncoding("ISO-8859-1"); //关键代虚拿码,解决中文乱码 Workbook workbook = Workbook.getWorkbook(file,workbookSettings); WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream(), workbook); WritableSheet ws = wwb.getSheet(0); WritableCell cell = null; if("1".equals(leixing)){ cell = new Label(1,0,"应急演练单",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); }else if("2".equals(leixing)){ cell = new Label(1,0,"消防演练单",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); } if(log!=null){ cell = new Label(2,1,log.getRiqi(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(5,1,log.getDidian(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,2,log.getMingcheng(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(5,2,log.getZudanwei(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,3,log.getJiaoben(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,4,log.getBeizhu(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); }else{ cell = new Label(2,4,"导出出错",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); } //合计小写 wwb.write(); wwb.close(); workbook.close(); return true; }
}
上面的是导出 你可以变变
㈧ 如何使用java从excel表提取内容
以下是使用java从excel表提取内容的程序 -
import java.io.File;import java.io.FileInputStream;import org.apache.tika.metadata.Metadata;import org.apache.tika.parser.ParseContext;import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;import org.apache.tika.sax.BodyContentHandler;public class ExtractContentFromExcel {
public static void main(String args[]) throws Exception {
// detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("excelExample.xlsx"));
ParseContext pcontext = new ParseContext();
// OOXml parser
OOXMLParser msofficeparser = new OOXMLParser();
msofficeparser.parse(inputstream, handler, metadata, pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for (String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}}Java
原ODF文件:excelExample.xlsx 的内容如下羡大 -
执行上面示例代码敏卖,得到以下结果 -
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/F:/worksp/javaexamples/libs/tika_libs/tika-app-1.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/F:/worksp/javaexamples/libs/tika_libs/tika-server-1.16.jar!/org/slf4j/桥派逗impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
九月 27, 2017 5:15:47 上午 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: JBIG2ImageReader not loaded. jbig2 files will be ignored
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
TIFFImageWriter not loaded. tiff files will not be processed
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
J2KImageReader not loaded. JPEG2000 files will not be processed.
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
九月 27, 2017 5:15:47 上午 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: org.xerial's sqlite-jdbc is not loaded.
Please provide the jar on your classpath to parse sqlite files.
See tika-parsers/pom.xml for the correct version.
Contents of the document:Sheet1
编号 姓名 年龄 工作
1001 王传大 22 Java软件开发
1002 李小双 29 项目经理
1020 张在传 28 人事经理
Sheet2
Sheet3
Metadata of the document:
date: 2017-09-27T09:15:38Z
meta:creation-date: 2017-09-27T09:13:50Z
extended-properties:Application: Microsoft Excel
Creation-Date: 2017-09-27T09:13:50Z
dcterms:created: 2017-09-27T09:13:50Z
Last-Modified: 2017-09-27T09:15:38Z
dcterms:modified: 2017-09-27T09:15:38Z
Last-Save-Date: 2017-09-27T09:15:38Z
protected: false
meta:save-date: 2017-09-27T09:15:38Z
Application-Name: Microsoft Excel
modified: 2017-09-27T09:15:38Z
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
custom:KSOProctBuildVer: 2052-10.1.0.6489Shell
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yii.com 。
㈨ 将Excel文件数据转成java bean 时数据错乱,求指导
我这有个例子你看看吧。。。这个只是如何把数据写入excel,没有设计到数据库。。你把数据库里的数据取出来然后照着这个例子把数据放进去到excel表格里就行了
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("开始");
try{
//打开文件
WritableWorkbook book=Workbook.createWorkbook(new File("e://测试.xls"));
WritableSheet sheet=book.createSheet("第一页",0);
//生成名为"第一页的工作表",参数0表示这是第一页
Label label=new Label(0,0,"test");
//在label对象的构造函数中指定单元格位置是是第一列第一行(0,0)以及单元格内容为test
sheet.addCell(label);
//将定义好的单元格添加到工作表中
/*生成一个保存数字的单元格
必须使用Number的完整包路径,否则有语法歧义
单元格位置是第二列,第一行,值为789.123*/
jxl.write.Number number=new jxl.write.Number(1,0,123);
sheet.addCell(number);
//写入数据并关闭文件
book.write();
book.close();
}catch(Exception e){
System.out.println(e);
}
System.out.println("结束");
}
}
㈩ 如何用java实现xml文件转excel
实现思路:
直接从Excel文件装换成XML文件笑肆是可以实现的,这里我采用一个中间装换,也就是先实现excel文件内容放入实现设计好的access数据库文件中,然后再从access中读取记录写道xml文件中,因为我这里的实际问题是把多个excel表,每个表中又有多个sheet工作薄,这样我先导入数据库中,也方便修改和处理.
这样,需要写两个类:
XlsToAccess类,用来实现从excel文件根据事先约定的格式,按照数据库设碰蚂轿计字段存放进去
AccessToXml类,用物巧来实现从access文件数据库中的记录按约定格式写到xml文件中去
然后还需要一个主运行窗口类XlsToXml,这个类我们使用eclipse插件SWT Designer来完成
最后把工程打成JAR包,再用NativeJ将Jar包生成为可执行的exe文件