1、jxl操作Excel
在开始进行Java写Excel前,我们需要先下一个jxl的jar包,这个jar包中提供了相关读写Excel的方法。随后我们将jxl.jar放到classpath下或者在工程的buildpath中添加jxl.jar后,便可以开始Java读写Excel的神秘之旅了。
Java程序向Excel文件中写数据,包括:1、数据类型的控制;2、单元格及数据的格式化。
数据时外面传进来,暂不调用单元格及数据的格式化函数
public class ExcelIO {
public ExcelIO()
{
}
public static void writeExcel(String fileName,String sheetName,ArrayList<ArrayList<String>> dim2value)
{
try
{
// 打开文件
WritableWorkbook book = Workbook.createWorkbook(new File(fileName));
// 生成名为“sheet1”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet(sheetName, 0);
//Object[][] dim2value = (Object[][])dim2valueList.get(i);
/*if (dim2value == null || dim2value.length== 0)
{
//MessageBox.Show("您还没有生成统计信息,请生成!");
throw new ExcelIOException("需要输出到Excel文件的参数为空,或其内容为空!");
}*/
int rows = dim2value.size();
int cols =dim2value.get(0).size();
if (dim2value != null)
{
for (int k = 0; k <rows; k++)
{
ArrayList<String> line=dim2value.get(k);
for (int j = 0; j <cols; j++)
{
String oneValue=line.get(j);
// 在Label对象的构造子中指名单元格位置是第j列第k行(j,k),单元格内容为string
Label label = new Label(j, k, oneValue);
sheet.addCell(label);
}
}
}
book.write();
book.close();
} catch (Exception e) {
System.out.println(e);
}
}
public static WritableCellFormat getDataCellFormat(CellType type) {
WritableCellFormat wcf = null;
try {
// 字体样式
if (type == CellType.NUMBER || type == CellType.NUMBER_FORMULA) {// 数字
NumberFormat nf = new NumberFormat("#.00");
wcf = new WritableCellFormat(nf);
} else if (type == CellType.DATE) {// 日期
DateFormat df = new DateFormat("yyyy-MM-dd hh:mm:ss");
wcf = new WritableCellFormat(df);
} else {
WritableFont wf = new WritableFont(WritableFont.TIMES, 10,
WritableFont.NO_BOLD, false);
// 字体颜色
wf.setColour(Colour.RED);
wcf = new WritableCellFormat(wf);
}
// 对齐方式
wcf.setAlignment(Alignment.CENTRE);
wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
// 设置上边框
wcf.setBorder(Border.TOP, BorderLineStyle.THIN);
// 设置下边框
wcf.setBorder(Border.BOTTOM, BorderLineStyle.THIN);
// 设置左边框
wcf.setBorder(Border.LEFT, BorderLineStyle.THIN);
// 设置右边框
wcf.setBorder(Border.RIGHT, BorderLineStyle.THIN);
// 设置背景色
wcf.setBackground(Colour.YELLOW);
// 自动换行
wcf.setWrap(true);
} catch (WriteException e) {
e.printStackTrace();
}
return wcf;
}
public static void main(String[] args) {
ArrayList<ArrayList<String>> b=new ArrayList<ArrayList<String>>();
ArrayList<String> a1=new ArrayList<String>();
a1.add("asd");
a1.add("gh");
ArrayList<String> a2=new ArrayList<String>();
a2.add("tg");
a2.add("bg");
c.add(a1);
c.add(a2);
ExcelIO.writeExcel("C:\\testExcel.xls", "sheet1", b);
}
}
参考:http://blog.csdn.net/aking21alinjuju/article/details/5996110
2、pio操作Excel
Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API
目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
写Excel
// 在工作簿里上创建一个sheet,在sheet里创建一行,参数为行号(第二行)
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 1);
// 在row的这一行创建四个单元格,short型参数为列号。 第一个单元格第1列设
// 为整数1,其他单格使用简洁的一句式写法,分别设置 为实数、字串、布尔值
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue(1);
row.createCell((short) 1).setCellValue(1.2);
row.createCell((short) 2).setCellValue("Hello World!");
row.createCell((short) 3).setCellValue(true);
// 写入文件
FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls");
wb.write(fileOut);
fileOut.close();
读Excel
try{
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("c:\\workbook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short) 0);
String msg = cell.getStringCellValue();
System.out.println(msg);
}catch(Exception e){
e.printStackTrace();
}
参考http://blog.csdn.net/s_ongfei/article/details/2794570
Eclipese从入门到精通ch22