求助...java读取txt问题..
主叫号码 类别 通话费(元)
XXXX 套餐1 13.33
XXXX 套餐1 13.33
小计: 13.33
如何读取到小计这一行的数据,以及上一行的主叫号码,并且能不能把两个数据合成二维数组? 求代码...非常感谢~
追问:有固定格式的..麻烦你设计一下代码吧,谢谢~有很多组号码和金额,,要输出到excel里,要这样怎么做才行呢?谢谢。我只想要号码和小计后面的金额可以吗?谢谢~
答案:先问一下你的txt文件是固定格式的吗?还是随意的格式,如果你的txt是有规定的格式,可以通过读取每一行,然后通过分隔符将其数据取出。例如:
主叫号码,类别,通话费
xxxx,套餐1,13.33
xxxx,套餐1,13.33
小计:13.33
读取第一行放入数组中例如a[],这个数组0,1,2元素就是你要的数据。
判断是否读取最后一行,真说明读到小计,进行小计的处理。
以上是设计思路和我的一些疑问点,如果有帮助或者需要我设计代码的话,追问吧。没有固定格式的txt文件读取出数据不太好做,你的分隔符是固定的空格数的话也是可以做到的。
其他:java 读取txt到时没什么问题,用文件流的方式就能读取的到,也确实是一行一行的读取的,不过做二维数组,应该就没办法了吧。
如果要做数组形式的话,建议你把txt改成xls文件。
去查查java操作xls问题就能解决。 import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Text {
public static void main(String[] args) {
File file=new File("C:\\a.txt");
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader br=new BufferedReader(fr);
br.readLine();
br.readLine();
char[] c=new char[10];
br.read(c);
for(char ch:c){
if(ch==' '){
break;
}else{
System.out.print(ch);
}
}
System.out.println();
br.readLine();
String fourthLine=br.readLine();
System.out.println(fourthLine);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
能把两个数据存到二维数组里 只要能取出来值,就能存放
BufferedReader 有读取一行的方法readline(); public void createXLS2(ReportOrdersales salesVo, OutputStream os,
String fileName) throws ServiceException {
String[] array = new String[3];
List<ReportOrdersales> list = this.listOrder(salesVo);
Workbook wb = null;
WritableWorkbook wwb = null;
try {
wb = Workbook.getWorkbook(new File(Resources.instance()
.getAttributeValue("sales_report_path")));
wwb = Workbook.createWorkbook(os, wb);
WritableSheet sheet = wwb.getSheet(0);
// sheet.setColumnView(0, 8);// 设置列宽
// sheet.setColumnView(1, 25);
// sheet.setColumnView(2, 15);
WritableFont wf = new jxl.write.WritableFont(WritableFont
.createFont("宋体"), 10, WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE);
WritableCellFormat wcf = new WritableCellFormat(wf);
WritableCellFormat wcfItemName = new WritableCellFormat(wf);
wcf.setBorder(Border.ALL, BorderLineStyle.THIN);// 设置边框
wcf.setAlignment(Alignment.CENTRE); // 设置字体居中
wcfItemName.setBorder(Border.ALL, BorderLineStyle.THIN);// 设置边框
wcfItemName.setAlignment(Alignment.LEFT);// 设置字体居左
wcfItemName.setWrap(true);// 自动换行
WritableFont wf1 = new jxl.write.WritableFont(WritableFont.TIMES,
16, WritableFont.BOLD);
WritableCellFormat wcf1 = new WritableCellFormat(wf1);
wcf1.setBorder(Border.ALL, BorderLineStyle.THIN);// 设置边框
wcf1.setAlignment(Alignment.CENTRE); // 设置字体居中
if (list != null && list.size() > 0) {
Label C1 = new Label(2, 1, list.get(0).getCompany_name(), wcf1);
Label C2 = new Label(7, 1, AppConstant.simpleDateFormat_short
.format(salesVo.getStartDate())
+ " ~ "
+ AppConstant.simpleDateFormat_short.format(salesVo
.getEndDate()));
sheet.addCell(C1);
sheet.addCell(C2);
jxl.write.NumberFormat df = new jxl.write.NumberFormat("#.00");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(
df);
wcfN.setBorder(Border.ALL, BorderLineStyle.THIN);
// jxl.write.Number labelNF = new jxl.write.Number(2, 3, 30,
// wcfN);
// java.text.NumberFormat df = new java.text.DecimalFormat("#");
// //整数类型
for (int i = 0; i < array.length; i++) {
for (int j = 1; j <= list.size(); j++) {
switch (i) {
case 0:
sheet.addCell(new jxl.write.Label(i, j + 2, String
.valueOf(j), wcf));
break;
case 1:
sheet.addCell(new jxl.write.Label(i, j + 2, list
.get(j - 1).getItem_name(), wcfItemName));
break;
case 2:
sheet.addCell(new jxl.write.Number(i, j + 2, Double
.parseDouble(list.get(j - 1).getSales()
.toString()), wcfN));
break;
}
}
}
// draw chat
File f = processOrderSales(list, fileName);
WritableImage wimage = new WritableImage(4, 4, 5, 20, f);
sheet.addImage(wimage);
}
wwb.write();
} catch (IOException e) {
log.error(e);
} catch (WriteException e) {
log.error(e);
} catch (BiffException e) {
log.error(e);
} finally {
if (wwb != null) {
try {
wwb.close();
} catch (WriteException e) {
log.error(e);
} catch (IOException e) {
log.error(e);
}
}
if (wb != null) {
wb.close();
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
log.error(e);
}
}
}
}
上一个:java软件培训,java软件开发,java软件就业培训学院
下一个:java 初学者遇到小问题,请前辈们赐教。