march alex's blog
          hello,I am march alex
          posts - 52,comments - 7,trackbacks - 0
          運(yùn)行此程序需要添加一個(gè)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的內(nèi)容,第一維數(shù)組存儲(chǔ)的是一行中格列的值,二維數(shù)組存儲(chǔ)的是多少個(gè)行
               * 
          @param file 讀取數(shù)據(jù)的源Excel
               * 
          @param ignoreRows 讀取數(shù)據(jù)忽略的行數(shù),比喻行頭不需要讀入 忽略的行數(shù)為1
               * 
          @return 讀出的Excel中數(shù)據(jù)的內(nèi)容
               * 
          @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));
                 // 打開(kāi)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);
                     // 第一行為標(biāo)題,不取
                     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) {
                               // 注意:一定要設(shè)成這個(gè),否則可能會(huì)出現(xiàn)亂碼
                               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:
                                   // 導(dǎo)入時(shí)如果為公式生成的數(shù)據(jù)則無(wú)值
                                   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) 評(píng)論(0)  編輯  收藏 所屬分類: java小程序
          主站蜘蛛池模板: 潍坊市| 雅安市| 交城县| 天水市| 汉中市| 明溪县| 昭苏县| 清镇市| 临颍县| 永年县| 湘西| 广安市| 新野县| 永登县| 玉环县| 武胜县| 北辰区| 武宁县| 瑞安市| 武定县| 沽源县| 舞钢市| 武功县| 缙云县| 湘潭市| 宾阳县| 凌海市| 苍山县| 新乡市| 湘阴县| 铜鼓县| 临沭县| 韶关市| 上饶市| 乐平市| 新巴尔虎左旗| 平罗县| 南昌市| 秦皇岛市| 扶风县| 勐海县|