File file=new File("f:/a.txt");
\t\tBufferedWriter bw=null;
\t\ttry {
\t\t\tbw=new BufferedWriter(new FileWriter(file,true));
\t\t\tbw.write("efg");
\t\t\tbw.close();
\t\t} catch (IOException e) {
\t\t\t// TODO Auto-generated catch block
\t\t\te.printStackTrace();
\t\t}
这里关键代码bw=new BufferedWriter(new FileWriter(file,true));
后面参数的true,就代表即使a.txt里面有内容,也不会替换。
poi的Sheet对象可以获取最后一行位置,如int lastRowNum = sheet.getLastRowNum(); 知道最后一行位置,就可以在最后一行后面开始加入新数据,如Row row = sheet.getRow(lastRowNum+1);
好吧,fileoutputstream有3个构造函数
FileOutputStream(File file);
FileOutputStream(String name);
FileOutputStream(String name,boolean append);
第三个构造函数就是确认是否将文件中的内容被输出流中的内容覆盖。这里的append 为true就是在文件末尾添加内容,为false就是覆盖。
了了否?
package com.ewin.test;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import com.ewin.common.DBException;
import com.ewin.util.ExcelUtil;
import com.ewin.util.StringUtil;
public class TestExl {
\t@SuppressWarnings("unchecked")
\tpublic static void main(String[] args)throws Exception {
\t\tClass.forName("oracle.jdbc.driver.OracleDriver");
\t\tConnection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.90:1521:a1", "bill", "bill");
\t\tStatement state = conn.createStatement();
\t\ttry {
\t\t\t// 导入时模板头部信息
\t\t\tString[] headNames = new String[] { "运单号", "运单ID"};
\t\t\t// 头部列对应的字段名
\t\t\tString[] fieldNames = new String[] { "BILL_NO", "BILL_ID"};
\t\t\tMap columnMap = new HashMap();
\t\t\tcolumnMap.put("BILL_NO", "运单号");
\t\t\tList returnList = ExcelUtil.getExcelToList(columnMap,""
\t\t\t\t\t+ "D:\\Documents\\Desktop\\exs.xls", 0);
\t\t\tList list = new ArrayList();
\t\t\tfor (int i = 0; i < returnList.size(); i++) {
\t\t\t\tMap map = (Map) returnList.get(i);
\t\t\t\t// 如果必填项为空,则提示信息,不能导入
\t\t\t\tResultSet result = state.executeQuery("select ser_bill_no bill_id from op_bill where bill_no = '"+map.get("BILL_NO").toString()+"'");
\t\t\t\tMap map1 = new HashMap();
\t\t\t\tmap1.put("BILL_NO",map.get("BILL_NO"));
\t\t\t\tString bill_id = "";
\t\t\t\twhile(result.next()){
\t\t\t\t\tbill_id = result.getString(1);
\t\t\t\t}
\t\t\t\tmap1.put("BILL_ID", bill_id);
\t\t\t\tlist.add(map1);
\t\t\t}
\t\t\tMap m = new HashMap();
\t\t\tm.put("LIST", list);
\t\t\tm.put("HEAD", headNames);
\t\t\tm.put("FIELD", fieldNames);
\t\t\tcreateExcel(m);
\t\t} catch (DBException e) {
\t\t\tthrow e;
\t\t}
\t\tstate.close();
\t\tconn.close();
\t\tSystem.out.println("生成完毕");
\t}
\t@SuppressWarnings("unchecked")
\tpublic static void createExcel(Map map){
\t\ttry{
\t\t\t// 获取要导出的数据集
\t\t\tList list = (List) map.get("LIST");
\t\t\t// excel头部
\t\t\tString[] headNames = (String[]) map.get("HEAD");
\t\t\t// excel头部对应的表字段
\t\t\tString[] fieldNames = (String[]) map.get("FIELD");
\t\t\t// 创建Excel的工作书册 Workbook,对应到一个excel文档
\t\t\tHSSFWorkbook wb = new HSSFWorkbook();
\t\t\t// 页数
\t\t\tint pages = 1;
\t\t\t// 获取总页数
\t\t\tif (list.size() > 50000) {
\t\t\t\tif (list.size() % 50000 == 0)
\t\t\t\t\tpages = list.size() / 50000;
\t\t\t\telse
\t\t\t\t\tpages = list.size() / 50000 + 1;
\t\t\t}
\t\t\t// 数据下标
\t\t\tint b = 0;
\t\t\t// 循环页数
\t\t\tfor (int k = 1; k <= pages; k++) {
\t\t\t\t/***************** 创建页 *****************/
\t\t\t\t// 创建Excel的工作sheet,对应到一个excel文档的tab
\t\t\t\tHSSFSheet sheet = wb.createSheet("第" + k + "页");
\t\t\t\t// 设置excel每列宽度
\t\t\t\tsheet.setColumnWidth(0, 4000);
\t\t\t\tsheet.setColumnWidth(1, 3500);
\t\t\t\t// 创建字体样式
\t\t\t\tHSSFFont font = wb.createFont();
\t\t\t\tfont.setFontName("Verdana");
\t\t\t\tfont.setBoldweight((short) 100);
\t\t\t\tfont.setFontHeight((short) 300);
\t\t\t\tfont.setColor(HSSFColor.BLUE.index);
\t\t\t\t// 创建单元格样式
\t\t\t\tHSSFCellStyle style = wb.createCellStyle();
\t\t\t\tstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
\t\t\t\tstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
\t\t\t\t// 设置边框
\t\t\t\tstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
\t\t\t\tstyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
\t\t\t\tstyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
\t\t\t\tstyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
\t\t\t\t/*********** 创建页 ****************/
\t\t\t\t/***************** 创建标题和表头 *****************/
\t\t\t\t// 创建行
\t\t\t\tHSSFRow row = sheet.createRow(0);
\t\t\t\trow.setHeight((short) 500);// 设定行的高度
\t\t\t\t// 循环创建标题列
\t\t\t\tfor (int i = 0; i < headNames.length; i++) {
\t\t\t\t\t// 创建一个Excel的单元格
\t\t\t\t\tHSSFCell cell = row.createCell(i);
\t\t\t\t\tcell.setCellStyle(style);
\t\t\t\t\tcell.setCellValue(headNames[i]);
\t\t\t\t}
\t\t\t\t/*********** 创建标题和表头 ****************/
\t\t\t\t/*********** 添加内容 ****************/
\t\t\t\t// 行
\t\t\t\tint i = 0;
\t\t\t\tfor (; b < list.size(); b++) {
\t\t\t\t\t// 起始为第2行
\t\t\t\t\ti++;
\t\t\t\t\t// 创建行
\t\t\t\t\trow = sheet.createRow((i));
\t\t\t\t\trow.setHeight((short) 500);// 设定行的高度
\t\t\t\t\t// 获取该行应输出的对象map
\t\t\t\t\tMap tempMap = (Map) list.get(b);
\t\t\t\t\tfor (int j = 0; j < fieldNames.length; j++) {
\t\t\t\t\t\t// 创建一个Excel的单元格
\t\t\t\t\t\tHSSFCell cell = row.createCell(j);
\t\t\t\t\t\tcell.setCellStyle(style);
\t\t\t\t\t\t// 取该列对应的值
\t\t\t\t\t\tObject temp = tempMap.get(fieldNames[j]);
\t\t\t\t\t\tif (StringUtil.isNull(temp))
\t\t\t\t\t\t\tcell.setCellValue("");
\t\t\t\t\t\telse {
\t\t\t\t\t\t\tif (fieldNames[j].equals("BILL_NO")) {
\t\t\t\t\t\t\t\tcell.setCellValue(temp.toString());
\t\t\t\t\t\t\t} else {
\t\t\t\t\t\t\t\ttry {
\t\t\t\t\t\t\t\t\tcell.setCellValue(Double.parseDouble(temp
\t\t\t\t\t\t\t\t\t\t\t.toString()));
\t\t\t\t\t\t\t\t} catch (Exception e) {
\t\t\t\t\t\t\t\t\tcell.setCellValue(temp.toString());
\t\t\t\t\t\t\t\t}
\t\t\t\t\t\t\t}
\t\t\t\t\t\t}
\t\t\t\t\t}
\t\t\t\t\t// 一页写完
\t\t\t\t\tif (b % 50000 == 0 && b != 0) {
\t\t\t\t\t\tb++;
\t\t\t\t\t\tbreak;
\t\t\t\t\t}
\t\t\t\t}
\t\t\t\t/*********** 添加内容 ****************/
\t\t\t}
\t\t\twb.write(new FileOutputStream(new File("D:\\Documents\\Desktop\\exscop.xls")));
\t\t}catch(Exception e){
\t\t\te.printStackTrace();
\t\t}
\t}
}
我这个案例你可以看下、
查一下api吧 如果是 FileWriter
public FileWriter(File file,
boolean append)
throws IOException根据给定的 File 对象构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
java如何文件里写数据
: import java.io.File ;import java.io.OutputStream ;import java.io.FileOutputStream ;public class OutputStreamDemo01{ public static void main(String args[]) throws Exception{ // 异常抛出,不处理 // 第1步、使用File类找到一个文件 File f= new File("d...
关于Java中向文件写入数据的问题
: 我只知道使用stringbuffer类会好很多.当然前提是导入IO包,创流,传给buffer,再刷新.既然您是写入文本文件的,那么就可以先tostring一下,然后写字符串.不过这,有一个缺陷,目前想不出更好的解决办法.(作为菜鸟,我就只能说这么多了.说的不对,还望见谅啊.)
哪位朋友会用JAVA编写往文件中写数据?? -
: 参考如下,既有读也有写2. 有一个文件,请读出该文件,并将其中的“nwe”改为“new”,注:不能将如“pnwe”改为“pnew”.public void testFileRead() throws Exception{ FileInputStream fis = null; InputStreamReader isr = null; ...
java 在文件里面读写数据 -
: 首先你得System.exit(0)不要滥用 用一个控制变量操作程序的进程,你得input是个Scanner类型的变量肿么往数组里写啊 要有一个读的io流啊 创建一个read 或者outputStreanm累心的对象用来读取文件内容
java中怎么向文件中读写数据
: 根据文件路径创建Java.io.File对象,然后通过FileOutputStream获得文件内容.如果是结构化数据则需要相应的解析类.
用java将数据写入文件
: 不支持直接在文件的最前面插入一行.实现这个功能的大概步骤是:1、新建个临时文件.2、在临时文件中写入新数据.3、把老文件中的数据都复制到临时文件中.4、删除老文件.5、临时文件重命名为老文件的名字.
JAVA把数据输入到文件里
: 直接将改完后的完整数据流在相同的地方保存为同名文件就行了 3行字符 声明成3个字符串 str1 str2 str3 , str1 = "jasper"+a; str2 = "sky"+b; str3 = "eco"+c; a、b、c就是你要改成的数字串了. String lineSep = System.getProperty("line....
JAVA中如何将生成的数据写入到文件 -
: 简单一点的用apache 的common io包下面的FileUtils类 public static void main(String[] args) throws Exception{ FileUtils.writeStringToFile(new File("d:/1.txt"), new String("abcdefg")) ; }
java:往文件中写数据,新写入的数据总是覆盖原有数据,怎么能实现追加功能呢? -
: java中,对文件进行追加内容操作的三种方法!import java.io.bufferedwriter; import java.io.fileoutputstream; import java.io.filewriter; import java.io.ioexception; import java.io.outputstreamwriter; import java.io.printwriter; import java.io....
java向文件中写入数据的问题
: 1.inFromServer是什么2.output.txt在什么目录下面