march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          運行此程序需要添加一個jar包下載地址
          import java.io.BufferedInputStream;
          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.FileReader;
          import java.io.FileWriter;
          import java.io.IOException;
          import java.text.DecimalFormat;
          import java.text.SimpleDateFormat;
          import java.util.ArrayList;
          import java.util.Arrays;
          import java.util.Date;
          import java.util.List;



          import java.util.StringTokenizer;
           






          import org.apache.poi.hssf.usermodel.HSSFCell;
          import org.apache.poi.hssf.usermodel.HSSFDateUtil;
          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.poifs.filesystem.POIFSFileSystem;

           

          public class ExcelToFile {
              public static void main(String[] args) throws Exception {
                  solve("D:\\input.xls", "D:\\output.txt");
                  System.out.println("finished!");
              }
              
              private static String readFile(String filename) throws Exception {
                  BufferedReader reader = new BufferedReader(new FileReader(filename));
                  String ans = "", line = null;
                  while ((line = reader.readLine()) != null) {
                      ans += line + "\r\n";
                  }
                  reader.close();
                  return ans;
              }
              
              private static void writeFile(String content, String filename)
                      throws Exception {
                  BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
                  writer.write(content);
                  writer.flush();
                  writer.close();
              }

              private static void solve(String xls_name, String outfile) throws Exception {

                  String ans = "";
                  File file = new File(xls_name);
                  String[][] result = getData(file, 2);
                  int rowLength = result.length;

                  for(int i=0;i<rowLength;i++) {   
                     for(int j=0;j<result[i].length;j++) {
                        ans += result[i][j]+" ";
                     }
                     ans += "\r\n";
                  }
                  writeFile(ans, outfile);
              }

              /**
               * 讀取Excel的內容,第一維數組存儲的是一行中格列的值,二維數組存儲的是多少個行
               * 
          @param file 讀取數據的源Excel
               * 
          @param ignoreRows 讀取數據忽略的行數,比喻行頭不需要讀入 忽略的行數為1
               * 
          @return 讀出的Excel中數據的內容
               * 
          @throws FileNotFoundException
               * 
          @throws IOException
               
          */

              public static String[][] getData(File file, int ignoreRows)
                     throws FileNotFoundException, IOException {
                 List<String[]> result = new ArrayList<String[]>();
                 int rowSize = 0;
                 BufferedInputStream in = new BufferedInputStream(new FileInputStream(
                        file));
                 // 打開HSSFWorkbook
                 POIFSFileSystem fs = new POIFSFileSystem(in);
                 HSSFWorkbook wb = new HSSFWorkbook(fs);
                 HSSFCell cell = null;
                 for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
                     HSSFSheet st = wb.getSheetAt(sheetIndex);
                     // 第一行為標題,不取
                     for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
                        HSSFRow row = st.getRow(rowIndex);
                        if (row == null) {
                            continue;
                        }
                        int tempRowSize = row.getLastCellNum() + 1;
                        if (tempRowSize > rowSize) {
                            rowSize = tempRowSize;
                        }
                        String[] values = new String[rowSize];
                        Arrays.fill(values, "");
                        boolean hasValue = false;
                        for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
                            String value = "";
                            cell = row.getCell(columnIndex);
                            if (cell != null) {
                               // 注意:一定要設成這個,否則可能會出現亂碼
                               cell.setEncoding(HSSFCell.ENCODING_UTF_16);
                               switch (cell.getCellType()) {
                               case HSSFCell.CELL_TYPE_STRING:
                                   value = cell.getStringCellValue();
                                   break;
                               case HSSFCell.CELL_TYPE_NUMERIC:
                                   value = String.format("%.2f", cell.getNumericCellValue());
                                   if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                       Date date = cell.getDateCellValue();
                                       if (date != null) {
                                           value = new SimpleDateFormat("yyyy-MM-dd")
                                                 .format(date);
                                      } else {
                                          value = "";
                                      }
                                   } else {
                                      value = new DecimalFormat("0").format(cell
                                             .getNumericCellValue());
                                   }
                                   break;
                               case HSSFCell.CELL_TYPE_FORMULA:
                                   // 導入時如果為公式生成的數據則無值
                                   if (!cell.getStringCellValue().equals("")) {
                                      value = cell.getStringCellValue();
                                   } else {
                                      value = cell.getNumericCellValue() + "";
                                   }
                                   break;
                               case HSSFCell.CELL_TYPE_BLANK:
                                   break;
                               case HSSFCell.CELL_TYPE_ERROR:
                                   value = "";
                                   break;
                               case HSSFCell.CELL_TYPE_BOOLEAN:
                                   value = (cell.getBooleanCellValue() == true ? "Y"
                                          : "N");
                                   break;
                               default:
                                   value = "";
                               }
                            }
                            if (columnIndex == 0 && value.trim().equals("")) {
                               break;
                            }
                            values[columnIndex] = value.trim();
                            hasValue = true;
                        }
                        if (hasValue) {
                            result.add(values);
                        }
                     }
                 }
                 in.close();
                 String[][] returnArray = new String[result.size()][rowSize];
                 for (int i = 0; i < returnArray.length; i++) {
                     returnArray[i] = (String[]) result.get(i);
                 }
                 return returnArray;
              }

          }
          posted on 2015-04-15 21:57 marchalex 閱讀(218) 評論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 泽库县| 湘乡市| 宾阳县| 中方县| 凤城市| 乐平市| 碌曲县| 旺苍县| 开江县| 武隆县| 陆丰市| 铜陵市| 海盐县| 巴楚县| 牟定县| 临海市| 舒城县| 甘德县| 乡城县| 开原市| 饶阳县| 河南省| 屏东县| 洞头县| 井研县| 克拉玛依市| 三江| 富锦市| 阿合奇县| 阿荣旗| 建始县| 云阳县| 台东市| 河曲县| 井陉县| 镶黄旗| 肥西县| 图木舒克市| 凌云县| 漯河市| 崇仁县|