導航:首頁 > 文件類型 > poi讀取成excel大文件

poi讀取成excel大文件

發布時間:2023-08-27 04:29:28

『壹』 poi讀取excel2007(大數據),然後保存到資料庫

導致內存溢出是因為太多了內存不夠用,你可以先讀一部分然後做個標記,先把讀到的這部分數據寫入到資料庫里。然後再從標記處開始讀一部分再寫入,再讀再寫直到完。不要一次性全部讀完。

『貳』 POI動態生成Excel

項目功能里要求能夠將展示的報表導出excel,因為報表的數據都是動態從list傳進來的,所以使用了POI技術來動態構建excel文件
網路里說POI是介個樣子的
「ApachePOI是Apache軟體基金會的開放源碼函式庫,POI提供API給java程序對MicrosoftOffice格式檔案讀和寫的功能」
簡單來說就是通過它的API可以進行創建/讀取文檔,sheet,行列單元格等操作,也可以設置文檔的各個樣式。
剛接觸這個任務的時候查了很多資料,最後主要是參考了這篇文章,程序復制粘貼就跑得通,對POI的整個理解可以得到很好地提升。
詳解JAVA POI導出EXCEL報表的操作(包括各種格式及樣式的實現)
然後參考著就實現了項目里要求的樣子啦

=======================================================
網路中的示例附上作為下次使用的備忘。
創建Excel 文檔

示例1將演示如何利用Jakarta POI API 創建Excel 文檔。

示例1程序如下:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFCell;

import java .io.FileOutputStream;

public class CreateXL {

/** Excel 文件要存放的位置,假定在D盤下*/

public static String outputFile="D:\test.xls";

public static void main(String argv[]){

try{

// 創建新的Excel 工作簿

HSSFWorkbook workbook = new HSSFWorkbook();

// 在Excel工作簿中建一工作表,其名為預設值

// 如要新建一名為"效益指標"的工作表,其語句為:

// HSSFSheet sheet = workbook.createSheet("效益指標");

HSSFSheet sheet = workbook.createSheet();

// 在索引0的位置創建行(最頂端的行)

HSSFRow row = sheet.createRow((short)0);

//在索引0的位置創建單元格(左上端)

HSSFCell cell = row.createCell((short) 0);

// 定義單元格為字元串類型

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

// 在單元格中輸入一些內容

cell.setCellValue("增加值");

// 新建一輸出文件流

FileOutputStream fOut = new FileOutputStream(outputFile);

// 把相應的Excel 工作簿存檔

workbook.write(fOut);

fOut.flush();

// 操作結束,關閉文件

fOut.close();

System.out.println("文件生成...");

}catch(Exception e) {

System.out.println("已運行 xlCreate() : " + e );

}

}

}

讀取Excel文檔中的數據

示例2將演示如何讀取Excel文檔中的數據。假定在D盤JTest目錄下有一個文件名為test1.xls的Excel文件。

示例2程序如下:

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFCell;

import java .io.FileInputStream;

public class ReadXL {

/** Excel文件的存放位置。注意是正斜線*/

public static String fileToBeRead="D:\test1.xls";

public static void main(String argv[]){

try{

// 創建對Excel工作簿文件的引用

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

// 創建對工作表的引用。

// 本例是按名引用(讓我們假定那張表有著預設名"Sheet1")

HSSFSheet sheet = workbook.getSheet("Sheet1");

// 也可用getSheetAt(int index)按索引引用,

// 在Excel文檔中,第一張工作表的預設索引是0,

// 其語句為:HSSFSheet sheet = workbook.getSheetAt(0);

// 讀取左上端單元

HSSFRow row = sheet.getRow(0);

HSSFCell cell = row.getCell((short)0);

// 輸出單元內容,cell.getStringCellValue()就是取所在單元的值

System.out.println("左上端單元是: " + cell.getStringCellValue());

}catch(Exception e) {

System.out.println("已運行xlRead() : " + e );

}

}

}

設置單元格格式

在這里,我們將只介紹一些和格式設置有關的語句,我們假定workbook就是對一個工作簿的引用。在Java中,第一步要做的就是創建和設置 字體和單元格的格式,然後再應用這些格式:

1、創建字體,設置其為紅色、粗體:

HSSFFont font = workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

2、創建格式

HSSFCellStyle cellStyle= workbook.createCellStyle();

cellStyle.setFont(font);

3、應用格式

HSSFCell cell = row.createCell((short) 0);

cell.setCellStyle(cellStyle);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

cell.setCellValue("標題 ");

處理word文檔

import java .io.*;

import org.apache.poi.hwpf.extractor.WordExtractor;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFCell;

public class TestPoi {

public TestPoi() {

}

public static void main(String args[]) throws Exception

{

FileInputStream in = new FileInputStream ("D:\a.doc");

WordExtractor extractor = new WordExtractor();

String str = extractor.extractText(in);

//System.out.println("the result length is"+str.length());

System.out.println(str);

}

}

搜集鏈接 方便以後查閱
POI操作Excel常用方法總結

自己封裝的poi操作excel工具

『叄』 關於Poi 大數據量Excel 導出時 文件過大的問題 怎麼解決

建議不要導出excel,當前excel中已經有支持cvs文件。
解釋:cvs文件的顯示方式和版xls的顯示方式一樣,並權且此顯示方式的執行效率要高於xls文件的額,因為cvs文件存儲的是數據直接直接用英文逗號分隔,xls是存儲的cell。所以在大量數據的情況下,都是導出為cvs文件。
備註:如果數據過多的話,建議可以分多次查詢導出,不要一次性導出,否則效率會很低。
-

『肆』 java 用POI處理比較大的word和excel文檔。

用它抄的底層介面,EVentModel來操作會襲比較省內存,但代碼寫起來比較麻煩。9M左右就內存溢出的話,應該是你設置的Heap size太小了。增大Heap的大小也是必須的。
如果是xls的,用JExcel會比POI省內存。但它不支持2010。

『伍』 Poi如何去讀取excel文件

直接全部在action裡面寫的,這個就不多說了,直接上代碼:

public String executeExcel() throws Exception{ String realPath = ServletActionContext.getServletContext().getRealPath("/fileupload");
System.out.println(fileFileName);
String filePath = "";
if(this.file!=null){
File saveFile = new File(new File(realPath),this.fileFileName);
filePath = realPath+"\\"+this.fileFileName;
System.out.println(filePath);
if(!saveFile.getParentFile().exists()){
saveFile.getParentFile().mkdirs(); }
FileUtils.File(file, saveFile); }
this.exlToDB(filePath);
ActionContext.getContext().put("message","導入成功");
return "success"; } //讀取excel2007,並把數據插入資料庫
public void exlToDB(String filePath){ boolean flag = true;
AllKpi akpi = new AllKpi(); try { // 文件流指向excel文件
FileInputStream fin=new FileInputStream(filePath);
XSSFWorkbook workbook = new XSSFWorkbook(fin);// 創建工作薄
XSSFSheet sheet = workbook.getSheetAt(0);// 得到工作表
XSSFRow row = null;// 對應excel的行
XSSFCell cell = null;// 對應excel的列
int totalRow = sheet.getLastRowNum();// 得到excel的總記錄條數
System.out.println(totalRow); // 以下的欄位一一對應資料庫表的欄位
float idd = 0.0f;
String id = "";
String Name = "";
String DEPT_NAME = "";
String Weight = "";
<span></span>String ALGORITHM = "";
String text = " ";
//String sql = "insert into DSP_TJ_KPI values(DSP_TJ_KPI_SEQ.nextval,?,?,?,'無',?)";
for (int i = 1; i <= totalRow; i++) {
row = sheet.getRow(i);
//System.out.println(row.getCell(0).toString());
if(row.getCell(0) != null && !"".equals(row.getCell(0)) && row.getCell(1) != null && !"".equals(row.getCell(1)) && row.getCell(2) != null && !"".equals(row.getCell(2)) && row.getCell(3) != null && !"".equals(row.getCell(3))){
cell = row.getCell((short) 0);
Name = cell.toString();
System.out.println(Name);
cell = row.getCell((short) 1);
Weight = cell.toString();
System.out.println(Weight);
cell = row.getCell((short) 2);
DEPT_NAME = cell.toString();
System.out.println(DEPT_NAME);
cell = row.getCell((short) 3);
ALGORITHM = cell.toString();
System.out.println(ALGORITHM);
akpi.setAllkpiName(Name);
akpi.setAllkpiDeptName(DEPT_NAME);
akpi.setAllkpiWeight(Weight);
akpi.setAlgorithm(ALGORITHM);
akpi.setText(text);
allKpiService.addAllKpi(akpi); //以下注釋代碼為連接jdbc測試代碼塊
/*pst = con.prepareStatement(sql);
//pst.setString(1, student_id);
pst.setString
(1, DEPT_NAME);
pst.setString
(2, Name);
pst.setString
(3, Weight);
<span></span>pst.setString(4, ALGORITHM);
pst.execute();*/
System.out.println("preparestatement successful"); } }
/*pst.close();
con.close();*/
fin.close(); } catch (FileNotFoundException e)
{
flag = false;
e.printStackTrace();
}
catch (IOException ex)
{
flag = false;
ex.printStackTrace();
}

閱讀全文

與poi讀取成excel大文件相關的資料

熱點內容
有關考研熱國家有哪些文件政策 瀏覽:666
pos機如何重新綁定app 瀏覽:68
十進制轉八進制java演算法 瀏覽:503
文件傳輸到手機上 瀏覽:20
硬碟數據還原軟體文件原名 瀏覽:61
手機百度雲盤下載的文件在哪裡 瀏覽:716
蘋果屏幕動態怎麼關閉 瀏覽:190
ri格式的文件怎麼打開 瀏覽:794
表格里如何將所有數據相加 瀏覽:805
買房網站的軟體有哪些 瀏覽:101
llftool工具 瀏覽:475
電腦找蘋果文件管理 瀏覽:980
怎麼重設微信支付密碼 瀏覽:115
plc編程實訓台如何 瀏覽:587
初中生自學哪個編程語言比較好 瀏覽:889
suselinux9ntp命令 瀏覽:604
php網路編程 瀏覽:265
國行5s最新系統版本 瀏覽:384
java輸出系統時間 瀏覽:227
大學心理普查要什麼app 瀏覽:216

友情鏈接