写了个方法,只能读取TXT的文件,EXCEL的读取不了,读出来是乱码,请各位大侠出下招、
public class TestSocket {

public void setWrite(String str) throws Exception{
// Scanner scanner=new Scanner(System.in);
// String str=scanner.next();
File file=new File("d:/kkk.xls");
    OutputStream ou=new FileOutputStream(file);
    OutputStreamWriter out=new OutputStreamWriter(ou);
    out.write(str);
    out.close();
    ou.close();
    
}
public String getRead() throws Exception{
File file=new File("c:/java基础题目.txt");
InputStream in=new FileInputStream(file);
InputStreamReader inp=new InputStreamReader(in);
char [] cb=new char[1024*10];
inp.read(cb);
String str=new String(cb);
System.out.println(str);
return str;
}
public static void main(String agrs[]) throws Exception{
TestSocket ts=new TestSocket();
ts.setWrite(ts.getRead());
}
}

解决方案 »

  1.   

    InputStreamReader inp=new InputStreamReader("excel编码",in); 
      

  2.   

    读取excel,建议使用poi开源组件。。
      

  3.   

    import java.io.*;import jxl.*;
    import jxl.write.WritableCell;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;import java.util.*;public class Caozuo {
    InputStream is = null; //定义一个输入流
    jxl.Workbook rwb = null;//定义一个只读的工作薄
    WritableWorkbook wr=null; //定义一个可写的工作薄
     Caozuo() {
    try {
    //out=new FileOutputStream("E:\\a.xls");
    is = new FileInputStream("E:\\a.xls");//创建一个输入流
    rwb = Workbook.getWorkbook(is);//创建只读工作薄
    //wr=Workbook.createWorkbook(out);
    wr=Workbook.createWorkbook(new File("E:\\a.xls"), rwb);//创建可写的工作薄 } catch (Exception e) {
    e.printStackTrace();
    }
    } public ArrayList Select() {
    ArrayList arr = new ArrayList();
    Sheet rs = rwb.getSheet(0);//读取第一个表
    for (int i = 0; i < rs.getRows(); i++) {
    ArrayList arr1 = new ArrayList();
    for (int k = 0; k < rs.getColumns(); k++) {
    Cell c00 = rs.getCell(k, i);//k表示列,i表示行,注列和行从0开始
     
    String strc00 = c00.getContents();//getContents()方法是将Cell转换为字符串形式
    arr1.add(strc00);
    }
    arr.add(arr1);
    }
    rwb.close();
    return arr;
    } public void Insert() throws RowsExceededException, WriteException, IOException { 
    WritableSheet rs = wr.getSheet(0);//查找表一
    //WritableSheet rs = (WritableSheet)rwb.getSheet(0);
    int rownumber = rs.getRows();//多少行
    int cellnumber = rs.getColumns();//多少列
    for (int k = 0; k < cellnumber; k++) {
    jxl.write.Label labelC = new jxl.write.Label(k,rownumber,"这是第'"+rownumber+"'行,第'"+k+"'列");
    labelC.setString("fdsadf");


    //k表示哪一列,rownumber表示哪一行,从而定向到某个单元格,第三个参数是单元格内的内容
    rs.addCell(labelC);//把此单元格放入表中
    }
    wr.write();//写入
    wr.close();
    }
    public void Delete(int id) throws IOException, WriteException{//id表示行号
    WritableSheet rs=wr.getSheet(0);//查找表一
    rs.removeRow(id-1);//删除行
    wr.write();//从内存中写入
    wr.close();

    }
    public void Update(int rowid,int columid,String cansu) throws RowsExceededException, WriteException, IOException{
    WritableSheet rs=wr.getSheet(0);
    //因为行和列都是从0开始,所以要减一
    jxl.write.Label labelC = new jxl.write.Label(columid-1,rowid-1,cansu);
    //WritableCell cell=(WritableCell) rs.getCell(columid-1,rowid-1);
    rs.addCell(labelC);
    wr.write();//写入
    wr.close();
    }
    }
      

  4.   

    就是想用纯java,不借助任何组件。我用jxl做成功了,就是突发奇想,想用java写
      

  5.   

    其实简单的读写整个excel文件而不是读写excel的内容
    用FileInputStream就够了,不就是一个字节流么poi,jxl,这些个适合比如读写一个cell等。
      

  6.   

    protected void buildExcelDocument(Map model, HSSFWorkbook wb,
    HttpServletRequest req, HttpServletResponse resp) throws Exception {
    // TODO Auto-generated method stub req.setCharacterEncoding("GBK");
    resp.setCharacterEncoding("GBK");
    HSSFSheet sheet;
    HSSFRow sheetRow;
    HSSFCell cell;

    Testsheet t = new Testsheet();
    sheet = wb.createSheet("Spring");
    sheet.setDefaultColumnWidth((short) 12);

    List<List<String>> listsh = Testsheet.addxinxi();
    List<String> listsha = new ArrayList<String>();
    int p = -1;

    for (List<String> ls : listsh) {
    ++p;
    int j = -1;
    for (int h = 0; h < ls.size(); h++) {
    j++;
    cell = getCell(sheet, p, j);
    setText(cell, ls.get(h));
    }
    if (p == 20) {
    break;
    }
    } }