本文目錄一覽:
- 1、JAVA如何向指定的EXCEL單元格中寫入數據??
- 2、java讀寫文件指定行的問題
- 3、如何用Java實現向一個file指定位置寫入多行數據,每行數據要指定開始的p
- 4、java 如何向txt文件中的某一行繼續寫入
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