话不多说,先上工具类。里面的逻辑是将读到的数据转存list再进行插入excel、如果是读数据库 也可以将里面的逻辑改成遍历实体类。道理是一样的。
public class ExcelUtil {
/**
*
* @param excelName 导出的excel的表格名称 需加后缀
* @param excelPath 导出的excel的路径
* @param sheet sheet单元名称
* @param rowNum 表格列数
* @param titleName 表格中文标题列表
* @param data 数据集合
* @param num 每列的单元格数
* @return
* @throws IOException
* @throws WriteException
*/
public static boolean DataToExcel(String excelName,String excelPath, String sheet, int rowNum, List<String> titleName,
List<String> data, int num) throws IOException{
boolean flag = false;
WritableWorkbook wwb = null;
try {
File file1 = new File(excelPath);
if (!file1.exists()) {
file1.mkdir();
}
File file = new File(file1, excelName);
if (!file.exists()) {
file.createNewFile();
}
//以fileName为文件名来创建一个Workbook
wwb = Workbook.createWorkbook(file);
// 创建工作表sheet
WritableSheet ws = wwb.createSheet(sheet, 0);
//要插入到的Excel表格的行号,默认从0开始
for (int i = 0; i < rowNum; i++) {
Label label = new Label(i, 0, titleName.get(i));
ws.addCell(label);
}
for (int i = 0; i < data.size(); i++) {
for (int j = 0; j < num; j++) {
ws.addCell(new Label(j, i + 1, data.get(i).split(",")[j]));
}
}
wwb.write();
flag = true;
// 关闭Excel工作簿对象
wwb.close();
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
}
测试:我说读本地文件,进行测试
public class testDownExcel {
public static void main(String[] args) throws Exception {
List<String> titleName = new ArrayList<String>();
titleName.add("编码");
titleName.add("名称");
titleName.add("简码");
titleName.add("税号");
titleName.add("地址电话");
titleName.add("银行账号");
titleName.add("邮件地址");
titleName.add("备注");
titleName.add("身份证校验");
List<String> list = ExcelUtil.readTxtFileToList("C:\\Users\\86187\\Desktop\\xxx客户编码.txt");
String excelPath = "D:\\test\\record";
boolean sheet1 = ExcelUtil.DataToExcel("kf.xls", excelPath, "sheet1", 9, titleName, list, 9);
if (sheet1 == true){
System.out.println("excel生成成功!!!");
}else {
System.out.println("excel生成失败!!!");
}
}
}
读取本地文件的方法
public static List<String> readTxtFileToList(String filePath) {
//存放内容的map对象
List<String> strings = new ArrayList<>();
try {
String encoding = "GBK";
File file = new File(filePath);
int count = 0;//定义顺序变量
if (file.isFile() && file.exists()) { // 判断文件是否存在
InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {//按行读取
if (!"".equals(lineTxt)) {
strings.add(lineTxt);//放入list
count++;
}
}
// System.out.println("count:"+count);
read.close();//关闭InputStreamReader
bufferedReader.close();//关闭BufferedReader
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
return strings;
}
完成!!