excel转换java
‘壹’ 能不能用java类实现把EXCEL文件转化成PDF文件
可以使用Spire.XLS for Java实现把Excel转为PDF文档。
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository></repositories><dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>5.3.3</version>
</dependency></dependencies>
将整个 Excel 文件转换为 PDF
以下是将整个 Excel 文档转换为 PDF 的步骤。
创建一个Workbook对象。
使用Workbook.loadFromFile()方法加载示例 Excel 文档。
通过Workbook.getConverterSetting()方法返回的ConverterSetting对象下的方法设置 Excel 到 PDF 的转换选项。
使用Workbook.saveToFile()方法将整个 Excel 文档转换为 PDF。
代码如下:
import com.spire.xls.FileFormat;import com.spire.xls.Workbook;public class ConvertExcelToPdf {
public static void main(String[] args) {
//创建一个Workbook实例并加载Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("C:\Users\Administrator\Desktop\Sample.xlsx");
//设置转换后的PDF页面高宽适应工作表的内容大小
workbook.getConverterSetting().setSheetFitToPage(true);
//将生成的文档保存到指定路径
workbook.saveToFile("output/ExcelToPdf", FileFormat.PDF);
}
}
‘贰’ 如何用JAVA把excel文件转换成PDF文件
推荐下面的方法都是免费的:
方法一:使用虚拟打印机pdf factory即可,而且其他格式文件只要是能够打印,选择这个虚拟打印机,都可以做成PDF文件,很简单实用;
方法二:使用专门的转换软件,把文件转成PDF文件;
方法三:用其他虚拟打印机转成PDF文件。
方法四:用WPS本身自带的转换功能转成PDF文件
‘叁’ 用Excel公式实现文本转Java输出文本的问题
public class Excel {
private jxl.Workbook rwb = null;
/**
* 得到当前工作薄的总列数
*
* @parma sheetIndex 工作薄号
* @return int
*/
public int getColCount(int sheetIndex) {
int colCnt = 0;
try {
jxl.Sheet rs = rwb.getSheet(sheetIndex);
colCnt = rs.getColumns();
} catch (Exception e) {
colCnt = 0;
} finally {
try {
} catch (Exception e) {
colCnt = 0;
}
}
return colCnt;
}
/**
* 得到当前工作薄的总行数
*
* @parma sheetIndex 工作薄号
* @return int
*/
public int getRowCount(int sheetIndex) {
int colCnt = 0;
try {
jxl.Sheet rs = rwb.getSheet(sheetIndex);
colCnt = rs.getRows();
} catch (Exception e) {
colCnt = 0;
} finally {
try {
} catch (Exception e) {
colCnt = 0;
}
}
return colCnt;
}
/**
* 打开Excel.
*
* @parma fileName Excel文件名+文件路径(绝对路径)
* @return boolean
*/
public boolean openExcel(String fileName) {
boolean Rtn = false;
try {
is = new FileInputStream(fileName);
rwb = Workbook.getWorkbook(is);
Rtn = true;
} catch (Exception e) {
Rtn = false;
} finally {
try {} catch (Exception e) {}
}
return Rtn;
}
/**
* 取得某个单元格的内容。不论单元格是何种数据类型都将返回字符型。
*
* @parma int col 列号 int row 行号
* @return String
*/
public String getCellContent(int col, int row) {
String cellContent = "";
try {
// 默认打开第一张工作薄。
Sheet rs = rwb.getSheet(0);
// 取得某一单元格的内容
Cell c00 = rs.getCell(col, row);
cellContent = c00.getContents();
} catch (Exception e) {
cellContent = "";
} finally {
try {
} catch (Exception e) {
cellContent = "";
}
}
return cellContent;
}
public static void main(String[] args) {
Excel ex = new Excel();
ex.openExcel("你自己的*.xls");
for (int i = 1; i < ex.getRowCount(0); i++) {
for (int j = 0; j < ex.getColCount(0); j++) {
System.out.println(ex.getCellContent(j, i));
}
}
}
}
‘肆’ 如何用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数据转换成Excel表格
package common.util;
import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;
import java.io.*;
/**
* Created by IntelliJ IDEA.
* User: xl
* Date: 2005-7-17
* Time: 9:33:22
* To change this template use File | Settings | File Templates.
*/
public class ExcelHandle
{
public ExcelHandle()
{
}
/**
* 读取Excel
*
* @param filePath
*/
public static void readExcel(String filePath)
{
try
{
InputStream is = new FileInputStream(filePath);
Workbook rwb = Workbook.getWorkbook(is);
//Sheet st = rwb.getSheet("0")这里有两种方法获取sheet表,1为名字,而为下标,从0开始
Sheet st = rwb.getSheet("original");
Cell c00 = st.getCell(0,0);
//通用的获取cell值的方式,返回字符串
String strc00 = c00.getContents();
//获得cell具体类型值的方式
if(c00.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)c00;
strc00 = labelc00.getString();
}
//输出
System.out.println(strc00);
//关闭
rwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 输出Excel
*
* @param os
*/
public static void writeExcel(OutputStream os)
{
try
{
/**
* 只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
* 因为类WritableWorkbook的构造函数为protected类型
* method(1)直接从目标文件中读取WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
* method(2)如下实例所示 将WritableWorkbook直接写入到输出流
*/
WritableWorkbook wwb = Workbook.createWorkbook(os);
//创建Excel工作表 指定名称和位置
WritableSheet ws = wwb.createSheet("Test Sheet 1",0);
//**************往工作表中添加数据*****************
//1.添加Label对象
Label label = new Label(0,0,"this is a label test");
ws.addCell(label);
//添加带有字型Formatting对象
WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
WritableCellFormat wcf = new WritableCellFormat(wf);
Label labelcf = new Label(1,0,"this is a label test",wcf);
ws.addCell(labelcf);
//添加带有字体颜色的Formatting对象
WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);
ws.addCell(labelCF);
//2.添加Number对象
Number labelN = new Number(0,1,3.1415926);
ws.addCell(labelN);
//添加带有formatting的Number对象
NumberFormat nf = new NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
ws.addCell(labelNF);
//3.添加Boolean对象
Boolean labelB = new jxl.write.Boolean(0,2,false);
ws.addCell(labelB);
//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0,3,new java.util.Date());
ws.addCell(labelDT);
//添加带有formatting的DateFormat对象
DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
WritableCellFormat wcfDF = new WritableCellFormat(df);
DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
ws.addCell(labelDTF);
//添加图片对象,jxl只支持png格式图片
File image = new File("f:\\2.png");
WritableImage wimage = new WritableImage(0,1,2,2,image);
ws.addImage(wimage);
//写入工作表
wwb.write();
wwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 拷贝后,进行修改,其中file1为被对象,file2为修改后创建的对象
* 尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,
* 以使单元格的内容以不同的形式表现
* @param file1
* @param file2
*/
public static void modifyExcel(File file1,File file2)
{
try
{
Workbook rwb = Workbook.getWorkbook(file1);
WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//
WritableSheet ws = wwb.getSheet(0);
WritableCell wc = ws.getWritableCell(0,0);
//判断单元格的类型,做出相应的转换
if(wc.getType == CellType.LABEL)
{
Label label = (Label)wc;
label.setString("The value has been modified");
}
wwb.write();
wwb.close();
rwb.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
//测试
public static void main(String[] args)
{
try
{
//读Excel
ExcelHandle.readExcel("f:/testRead.xls");
//输出Excel
File fileWrite = new File("f:/testWrite.xls");
fileWrite.createNewFile();
OutputStream os = new FileOutputStream(fileWrite);
ExcelHandle.writeExcel(os);
//修改Excel
ExcelHandle.modifyExcel(new file(""),new File(""));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
‘陆’ excel中日期格式是数字,想转成java的日期格式,遇到了问题
java读取excel时间格式出现数字的处理方法:
Excel存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化
1、数值格式(CELL_TYPE_NUMERIC):
1.纯数值格式:getNumericCellValue() 直接获取数据
2.日期格式:处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式
1).判断是否是日期格式:HSSFDateUtil.isCellDateFormatted(cell)
2).判断是日期或者时间
cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")
OR: cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd")
3.自定义日期格式:处理yyyy年m月d日,h时mm分,yyyy年m月等含文字的日期格式
判断cell.getCellStyle().getDataFormat()值,解析数值格式
yyyy年m月d日----->31
m月d日---->58
h时mm分--->32
举例说明:
private String parseExcel(Cell cell) {
String result = new String();
‘柒’ 如何将excel中的数据导入到java程序
找一个api,网上有的,可以操作excel,里面有给定的函数,看懂后直接调用就可以了
‘捌’ 如何利用excel生成java类
如果你想将Excel里面的表生成Java代码来实现你原来那个表的话,这是不可能的。
不过你可以将Excel文件转换为java文件, 就是将.xls改为.java 就OK 了,你试试吧!看能不能够帮到你嘛!
‘玖’ 如何把excel数据导入java
用第三方组件poi读取,给个例子你参考一下
public class ApachePOIExcelRead {
private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
public static void main(String[] args) {
try {
FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
Workbook workbook = new XSSFWorkbook(excelFile);
Sheet datatypeSheet = workbook.getSheetAt(0);
Iterator<Row> iterator = datatypeSheet.iterator();
while (iterator.hasNext()) {
Row currentRow = iterator.next();
Iterator<Cell> cellIterator = currentRow.iterator();
while (cellIterator.hasNext()) {
Cell currentCell = cellIterator.next();
//getCellTypeEnum shown as deprecated for version 3.15
//getCellTypeEnum ill be renamed to getCellType starting from version 4.0
if (currentCell.getCellTypeEnum() == CellType.STRING) {
System.out.print(currentCell.getStringCellValue() + "--");
} else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
System.out.print(currentCell.getNumericCellValue() + "--");
}
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
‘拾’ 将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("结束");
}
}