java通過橋訪問excel
㈠ 鎬庝箞鐢╦ava浠g爜璇誨彇excel鏂囦歡
鏈渚嬩嬌鐢╦ava鏉ヨ誨彇excel鐨勫唴瀹瑰苟灞曞嚭鍑虹粨鏋滐紝浠g爜濡備笅錛
澶嶅埗浠g爜 浠g爜濡備笅:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 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 ExcelOperate {
public static void main(String[] args) throws Exception {
File file = new File("ExcelDemo.xls");
String[][] result = getData(file, 1);
int rowLength = result.length;
for(int i=0;i<rowLength;i++) {
for(int j=0;j<result[i].length;j++) {
System.out.print(result[i][j]+"\t\t");
}
System.out.println();
}
}
/**
* 璇誨彇Excel鐨勫唴瀹癸紝絎涓緇存暟緇勫瓨鍌ㄧ殑鏄涓琛屼腑鏍煎垪鐨勫礆紝浜岀淮鏁扮粍瀛樺偍鐨勬槸澶氬皯涓琛
* @param file 璇誨彇鏁版嵁鐨勬簮Excel
* @param ignoreRows 璇誨彇鏁版嵁蹇界暐鐨勮屾暟錛屾瘮鍠昏屽ご涓嶉渶瑕佽誨叆 蹇界暐鐨勮屾暟涓1
* @return 璇誨嚭鐨凟xcel涓鏁版嵁鐨勫唴瀹
* @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:
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] = rightTrim(value);
hasValue = true;
}
㈡ java能讀寫同一個excel嗎
是的,Java能夠讀取和寫入同一個Excel文件,但需要謹慎操作。在進行讀取操作後,必須確保關閉讀取流,以避免寫入操作時發生沖突。否則,可能會導致數據丟失或格式錯誤等問題。為了確保數據的完整性和准確性,通常推薦使用專門的庫,如Apache POI或JXL等,它們提供了豐富的API來處理Excel文件。
使用這些庫時,讀取操作通常涉及到創建一個Workbook對象,通過Sheet對象訪問具體的Sheet,然後通過Row和Cell對象訪問數據。完成讀取後,務必關閉輸入流,釋放資源。接下來,你可以使用同樣的Workbook對象進行寫入操作。需要注意的是,寫入操作應盡量避免在讀取流仍然打開的情況下進行。
為了更好地管理資源,可以使用try-with-resources語句來自動關閉流。例如,在讀取Excel文件後,可以這樣寫:
try (FileInputStream fis = new FileInputStream(new File("path/to/file.xlsx"))) {
Workbook workbook = new XSSFWorkbook(fis);
}
這樣可以確保在讀取完成後,輸入流會自動關閉,從而避免了資源泄漏的問題。在寫入操作中,同樣可以使用類似的方法來確保資源的正確管理。
除了資源管理之外,使用合適的庫還可以幫助你更高效地處理復雜的Excel文件,例如處理多個Sheet、合並單元格、設置樣式等。因此,對於需要頻繁讀寫Excel文件的場景,推薦使用成熟的庫來提高開發效率和代碼質量。
綜上所述,Java確實可以讀取和寫入同一個Excel文件,但需要遵循一些最佳實踐,以確保操作的順利進行和數據的安全。
㈢ 在java中如何使用poi從excel中讀取數據
使用EasyExcel讀取Excel文件在Java中的流程相當直觀,藉助於阿里開源的EasyExcel庫,開發者可以輕松地完成這一任務。EasyExcel提供了一套簡單而強大的API,幫助開發者快速實現Excel數據的讀取。
以下是一個示例代碼,展示如何使用EasyExcel讀取Excel文件:
java
List dataList = EasyExcel.read("/path/to/your/excel/file.xlsx")
.sheet()
.doRead();
這里需要注意的是,您需要將`/path/to/your/excel/file.xlsx`替換為實際的Excel文件路徑,同時,`YourData`類應當根據Excel文件中的列名和數據類型進行創建,以確保與文件內容的匹配。請根據實際項目需求定義這個類。
為了深入了解EasyExcel的用法和功能,您還可以參考其官方文檔:基於Java的Excel處理工具 | Easy Excel。這份文檔提供了詳細的API介紹、示例代碼以及常見問題解答,有助於您更熟練地使用這個庫。
總之,使用EasyExcel進行Excel文件數據讀取是一個高效且便捷的過程。藉助於其簡單的API和豐富的文檔支持,開發者可以輕松地將Excel數據整合到Java應用中,從而實現更加靈活和強大的數據處理功能。
㈣ java 讀取excel文件 我需要去讀到每一行的每一個數據。 然後操作一番。 最後生成一個XML文件
jxl
package com.cj.fw.xml;
import java.io.File;import java.io.IOException;
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;
import jxl.Workbook;import jxl.WorkbookSettings;import jxl.read.biff.BiffException;import jxl.write.Label;import jxl.write.WritableCell;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import com.cj.pro.domain.Drilling;
public class DrillingExport {
// 模板文件位置 private final static String TempletFile = "/attachments/template/emergencydrill.xls"; // 數據 private Drilling log = null; private String leixing=null;
/** * 構造函數 */ public DrillingExport( Drilling log,String leixing) { this.log=log; this.leixing=leixing; }
/** * 安全培訓日誌導出表 * @throws IOException * @throws BiffException * @throws WriteException */ public boolean export(HttpServletRequest request,HttpServletResponse response) throws BiffException, IOException, WriteException { String fileName=""; if("1".equals(leixing)){ fileName="應急演練信息導出表.xls"; }else if("2".equals(leixing)){ fileName="消防演練演練信息導出表.xls"消譽數; } response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-type","application/拿首file"); response.setHeader("Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" )); File file = new File(request.getSession().getServletContext().getRealPath(TempletFile)); WorkbookSettings workbookSettings=new WorkbookSettings(); workbookSettings.setEncoding("ISO-8859-1"); //關鍵代虛拿碼,解決中文亂碼 Workbook workbook = Workbook.getWorkbook(file,workbookSettings); WritableWorkbook wwb = Workbook.createWorkbook(response.getOutputStream(), workbook); WritableSheet ws = wwb.getSheet(0); WritableCell cell = null; if("1".equals(leixing)){ cell = new Label(1,0,"應急演練單",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); }else if("2".equals(leixing)){ cell = new Label(1,0,"消防演練單",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); } if(log!=null){ cell = new Label(2,1,log.getRiqi(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(5,1,log.getDidian(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,2,log.getMingcheng(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(5,2,log.getZudanwei(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,3,log.getJiaoben(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); cell = new Label(2,4,log.getBeizhu(),ws.getCell(1,1).getCellFormat()); ws.addCell(cell); }else{ cell = new Label(2,4,"導出出錯",ws.getCell(1,0).getCellFormat()); ws.addCell(cell); } //合計小寫 wwb.write(); wwb.close(); workbook.close(); return true; }
}
上面的是導出 你可以變變