您的位置:

java对模板指定行开始写入,java按行写入文件

本文目录一览:

JAVA如何向指定的EXCEL单元格中写入数据??

我们项目里用的 供你参考,没写全,你可以自己百度下

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableImage;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

/**

* 导出excel

* @param reportParams 导出excel列名标示

* @param list导出excel值

* @param headersexcel头

* @param reportName·excel的sheet名

* @param response

* @param startRow从哪一行开始放list值

* @param startCol 从哪一列开始放list值

* @return

*/

public boolean report(ReportBean rb, List list, XlsHeaderBean[] headers, String reportName, HttpServletResponse response, int startRow, int startCol, HttpServletRequest request){

WritableWorkbook wwb = null;

OutputStream os;

boolean flag = true;

Date date = new Date();

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String strDate = format.format(date);

try {

// 用Workbook类的工厂方法创建工作薄(Workbook)对象

response.setContentType("application/x-msdownload");

String sheetName = "report";

sheetName = sheetName.replaceAll(":", "").replaceAll("[)]", "")

.replaceAll("[(]", "");

// 这里解释一下

// attachment; 这个代表要下载的,如果去掉就编程直接打开了

// filename是文件名,另存为或者下载时,为默认的文件名

response.addHeader("Content-Disposition", "attachment; filename="

+ new String(sheetName.getBytes("UTF-8"), "ISO-8859-1")+ strDate

+ ".xls");

os = response.getOutputStream();

wwb = Workbook.createWorkbook(os);

} catch (IOException e) {

e.printStackTrace();

return flag = false;

}

if (wwb != null) {

// 创建一个可写入的工作表

// Workbook的createSheet方法两个参数,1名称,2位置

WritableSheet ws = wwb.createSheet(reportName, 0);

// 下面开始添加单元格

// 导出excel

try {

Label labelC = null;

for(int j = 0; j headers.length; j++){

if(headers[j].isUnion()){

ws.mergeCells(headers[j].getCol(), headers[j].getRow(), headers[j].getCol()+headers[j].getColLength(), headers[j].getRow()+headers[j].getRowLength());

}

labelC = new Label(headers[j].getCol(), headers[j].getRow(), headers[j].getValue());

ws.addCell(labelC);

}

} catch (RowsExceededException e) {

e.printStackTrace();

} catch (WriteException e) {

e.printStackTrace();

}

String value = null;

for (int i = 0; i list.size(); i++) {

Map values = (Map)list.get(i);

for (int j = 0; j rb.getReportParams().length; j++) {

// 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行

Label labelC;

if(values.get(rb.getReportParams()[j]) == null){

value = "";

} else {

if(values.get(rb.getReportParams()[j]) instanceof java.util.Date){

value = format.format(values.get(rb.getReportParams()[j]));

} else if(values.get(rb.getReportParams()[j]) instanceof java.math.BigDecimal){

value = values.get(rb.getReportParams()[j]).toString();

} else {

value = values.get(rb.getReportParams()[j]).toString();

}

}

labelC = new Label(j+startCol, i + startRow, value);

try {

// 将生成的单元格添加到工作表中

ws.addCell(labelC);

} catch (RowsExceededException e) {

e.printStackTrace();

return flag = false;

} catch (WriteException e) {

e.printStackTrace();

return flag = false;

}

}

}

if(rb.isHasImg()){

String rootPath = this.getServletContext().getRealPath("savefiles");

String imgPath = rb.getImgPath();

if(rootPath != null rootPath.compareTo("") != 0 imgPath != null imgPath.compareTo("") !=0){

String[] strs = imgPath.split("\\/");

String imgName = strs[strs.length-1];

File file = new File(rootPath + File.separator + imgName);

if(file.exists()){

WritableImage wi = new WritableImage(0, startRow + list.size() + 2,12,20, file);

ws.addImage(wi);

}

}

}

try {

// 从内存中写入文件中

wwb.write();

wwb.close();

return flag;

} catch (IOException e) {

e.printStackTrace();

return flag = false;

} catch (WriteException e) {

e.printStackTrace();

return flag = false;

}

}

return flag;

}

java读写文件指定行的问题

读写是两个不同的分支,通常都是分开单独使用的,在读取到每行内容后,通过特定的条件判断即可获取到应用的行内容,之后进行输出即可。

举例:

可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader bre = null;

try {

String file = "D:/test/test.txt";

bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

System.out.println(str);//原样输出读到的内容,此处如果增加必要的条件,就可以货到的指定的内容

};

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,

OutputStreamWriter pw = null;//定义一个流

pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例

pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次write

pw.close();//关闭流

备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

如何用Java实现向一个file指定位置写入多行数据,每行数据要指定开始的p

Java使用FileWriter实现文件的写入,用法为:FileWriter(file,true); 其中第二个参数设置成false就是覆盖写入,true就是增量存储。

java 如何向txt文件中的某一行继续写入

Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方。这就是“Random”的意义所在。

相关API:

RandomAccessFile(String

name, String

mode)构造器,模式分为r(只读),rw(读写)等

RandomAccessFile.readLine()方法实现对一整行的读取,并重新定位操作位置

RandomAccessFile.write(byte[] b)用于字节内容的写入

示例如下:

RandomAccessFile raf = new RandomAccessFile("f:/1.txt", "rw");

int targetLineNum = 10;

int currentLineNum = 0;

while(raf.readLine() != null){

    if(currentLineNum == targetLineNum){ // 定位到目标行时结束

break;

    }

    currentLineNum++;

}

raf.write("\r\ninsert".getBytes());

raf.close();