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();

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303753.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:50
下一篇 2024-12-31 11:50

相關推薦

發表回復

登錄後才能評論