我正在开发一个项目,我必须从excel文件中读取一个字符串,并将其与序列一起写入csv文件。
这是我的代码:
private void readExcelSheet(String inputFile){
//Method to read the input file
File excelSheet = new File(inputFile);
set1=new LinkedHashSet<String>();
InputStream inp = null;
try {
inp = new FileInputStream(excelSheet);
wb =WorkbookFactory.create(inp);
for(int sheetNo=0; sheetNo<wb.getNumberOfSheets();sheetNo++)
{ //counter5++;
System.out.println(sheetNo);
map1=new LinkedHashMap<String,ArrayList<String>>();
Sheet sheet = wb.getSheetAt(sheetNo);
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
//array1=new ArrayList<String>();
temp=row.getCell(0).getStringCellValue();
System.out.println(temp);
inputInto(temp);
}
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
public void inputInto(String temp1) throws IOException{
FileWriter writer = new FileWriter(fileName,true);
PrintWriter out = new PrintWriter(writer);
out.append("\""+temp+"\"");
out.append(",");
out.append((countLines()+1)+"");
System.out.println(countLines()+1);
out.append("\n");
out.flush();
}
public int countLines() throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(fileName));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.mark(0);
reader.reset();
reader.close();
return cnt;
}
public static void main(String[] args){
Token token=new Token();
token.readExcelSheet("D:/Workspace/sample.xlsx");
}
这里readExcelSheet是读取输入excel表的方法 inputInto是写入csv文件的方法 countLines是查找最后一个行号的方法,以便找到序列。
但是当我第一次尝试运行我的代码时,我将序列设为'1' 当我第二次运行时,我得到的序列为'11'和23,很快。
以下是我的意见:
“Horizon牙科选择计划提供从任何牙医接受牙科服务的自由,同时通过在我们庞大的全国性网络中选择牙医,使会员能够节省资金并实现利益最大化。
Horizon牙科选择计划提供:
•三个福利水平的灵活性
•使用参与Horizon牙科选择计划的牙医时,降低自付费用和更高的计划福利
•访问超过136,000名参与牙医的全国性网络
•网络内牙医折扣10%至30%
•预防性牙科服务涵盖100%的允许费用
•年度免赔额
•离开网络的选择;免赔额和共同保险可能适用
有关更多信息,请下载计划详细信息
有关详细信息,请下载计划详细信息。“
任何人都可以帮助我。 感谢..
答案 0 :(得分:0)
我认为你的错误是
FileWriter writer = new FileWriter(fileName,true);
当你说true
时,输出文件在第二次调用中没有删除,java会在其上写入。只需删除该行中的true
,我猜就可以了。