黑马程序员技术交流社区
标题:
poi读写excel
[打印本页]
作者:
乔兵
时间:
2013-10-7 18:44
标题:
poi读写excel
(转载)
试试用POI操作excel
纯粹为了自己好找.
要有人看了这些的话,随意就好啦...欢迎指出不当之处.
package xls;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ReadXL
{
public static String fileName = "C:\\xls\\EXCEL.xls";
public static String path = "C:\\xls\\"; //为方便,就这样写了.
public static void main(String argv[])
{
List list = readExcel();
String xmldata = buildXML(list);
createXMLFile(xmldata);
}
/**
* 读取磁盘上的EXCEL文件的内容
* @return List
*/
public static List readExcel()
{
List list = null;
UserBean ub = null;
try
{
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
fileName)); //得到excel对象
HSSFSheet sheet = workbook.getSheetAt(0); //得到第一个sheet
int rows = sheet.getPhysicalNumberOfRows(); //得到行数
list = new ArrayList();
for (int i = 1; i < rows; i++)
{
HSSFRow row = sheet.getRow(i);
ub = new UserBean();
HSSFCell cell = row.getCell((short) 0); //得到列0(下标0,为第一列)
ub.setName(cell.getStringCellValue());
cell = row.getCell((short) 1); //得到列 1
ub.setEmail(cell.getStringCellValue());
cell = row.getCell((short) 2); //得到列2
ub.setPhone(cell.getStringCellValue());
cell = row.getCell((short) 3); //得到列3
ub.setPasswd(cell.getStringCellValue());
list.add(ub);
}
return list;
}
catch (Exception e)
{
return null;
}
}
/**
* 组装xml格式字符串
* @param list List
* @return String
*/
public static String buildXML(List list)
{
StringBuffer sb = new StringBuffer();
sb.append("<contents-list>\n\t");
sb.append("<content>\n\t\t");
for (int i = 0; i < list.size(); i++)
{
UserBean bean = (UserBean) list.get(i);
sb.append("<userinfo>\n\t\t\t");
sb.append("<name>" + bean.getName() + "</name>\n\t\t\t");
sb.append("<email>" + bean.getEmail() + "</email>\n\t\t\t");
sb.append("<phone>" + bean.getPhone() + "</phone>\n\t\t\t");
sb.append("<passwd>" + bean.getPasswd() + "</passwd>\n\t\t");
if (i + 1 < list.size())
{
sb.append("</userinfo>\n\t\t");
}
else
{
sb.append("</userinfo>\n\t");
}
}
sb.append("</content>\n");
sb.append("</contents-list>");
return sb.toString();
}
/**
* 输出到文件
* @param xmldata String
*/
public static void createXMLFile(String xmldata)
{
String createTime = createTime();
String filename = path + createTime + ".xml";
OutputStreamWriter osw = null;
FileOutputStream output = null;
try
{
output = new FileOutputStream(filename);
osw = new OutputStreamWriter(output, "utf-8");
osw.write(xmldata);
osw.flush();
}
catch (Exception ex)
{
}
finally
{
try
{
if (null != output)
{
output.close();
}
}
catch (IOException ex2)
{
}
try
{
if (null != osw)
{
osw.close();
}
}
catch (IOException ex3)
{
}
}
}
/**
* 用时间作为文件名
* @return String
*/
public static String createTime()
{
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddmmss");
String createTime = dateFormat.format(date);
return createTime;
}
}
复制代码
再就一个UserBean,就几个属性.
作者:
张慧
时间:
2013-10-7 20:22
不错,有学到。。
作者:
王一勇
时间:
2014-8-6 23:50
找了好久了,终于在这儿发现了,楼主能罗例出,操作excel的一些主要方法就最好了。
作者:
huiyifan
时间:
2015-9-23 19:08
.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2