当前位置:编程学习 > JAVA >>

求助...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 初学者遇到小问题,请前辈们赐教。

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,