當前位置:首頁 » 編程語言 » javapoi導入

javapoi導入

發布時間: 2023-03-22 07:39:24

『壹』 java通過poi把excel文件導入mysql資料庫報錯

java通過poi把excel文件導入mysql資料庫報錯是因為excel中的數據類型要跟mysql中的數據類型和長度對應,否則類型轉換異常是最常見的。所以插入到mysql資料庫的時候需要做類型檢查。

1、Excel中的測試數據:

『貳』 java poi Excel大數據量導入怎麼提高速度

記得有個屬性,

POI3.8的SXSSF包是XSSF的一個擴展版本,支持流處理,在生成大數據量的電子表格且堆空間有限時使用。SXSSF通過限制內存中可訪問的記錄行數來實現其低內存利用,當達到限定值時,新一行神肢派數據的加入會引起老一行的數據刷新到硬碟。
比如內存中限制行數為100,當行號到達101時,行號為0的記錄刷新到硬碟並從內存中刪除,當行號到達102時,游賀行號為1的記錄刷新飢遲到硬碟,並從內存中刪除,以此類推。
rowAccessWindowSize代表指定的內存中緩存記錄數,默認為100,此值可以通過
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)來設置。

『叄』 java使用什麼技術實現excel數據的批量導入導出

java使用第三方工具包POI技術實現excel數據的批量導入導出。

舉例如下:

1、下載apache的相關jar包。poi-ooxml-3.6.jar xmlbeans-2.3.0.jar等,如圖:

2、編寫相關的讀寫類

/**

* 讀取xls文件內容

*/

private
List<XlsDto> readXls() throws
IOException {

InputStream is = new
FileInputStream("test.xls");

HSSFWorkbook hssfWorkbook = new
HSSFWorkbook(is);

XlsDto xlsDto = null;

List<XlsDto> list = new
ArrayList<XlsDto>();

// 循環工作表Sheet

for
(int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {

HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);

if
(hssfSheet == null) {

continue;

}

// 循環行Row

for
(int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

HSSFRow hssfRow = hssfSheet.getRow(rowNum);

if
(hssfRow == null) {

continue;

}

xlsDto = new
XlsDto();

// 循環列Cell

// 0學號 1姓名 2學院 3課程名 4 成績

// for (int cellNum = 0; cellNum <=4; cellNum++) {

HSSFCell xh = hssfRow.getCell(0);

if
(xh == null) {

continue;

}

xlsDto.setXh(getValue(xh));

HSSFCell xm = hssfRow.getCell(1);

if
(xm == null) {

continue;

}

xlsDto.setXm(getValue(xm));

HSSFCell yxsmc = hssfRow.getCell(2);

if
(yxsmc == null) {

continue;

}

xlsDto.setYxsmc(getValue(yxsmc));

HSSFCell kcm = hssfRow.getCell(3);

if
(kcm == null) {

continue;

}

xlsDto.setKcm(getValue(kcm));

HSSFCell cj = hssfRow.getCell(4);

if
(cj == null) {

continue;

}

xlsDto.setCj(Float.parseFloat(getValue(cj)));

list.add(xlsDto);

}

}

return
list;

}

3、導出就是輸入到一個新的excel文件裡面

public void writeXls(List<Student> list, String path) throws Exception {

if (list == null) {原始數據為空,直接返回

return;

}

int countColumnNum = list.size();//設置列數

HSSFWorkbook book = new HSSFWorkbook(); //創建工作表對象

HSSFSheet sheet = book.createSheet("studentSheet");

// 創建第一行

HSSFRow firstRow = sheet.createRow(0);

HSSFCell[] firstCells = new HSSFCell[countColumnNum];

//創建表頭

String[] options = { "no", "name", "age", "score" };

//循環數據域

for (int j = 0; j < options.length; j++) {

firstCells[j] = firstRow.createCell(j);

firstCells[j].setCellValue(new HSSFRichTextString(options[j]));

}

//處理每一個cell的值

for (int i = 0; i < countColumnNum; i++) {

HSSFRow row = sheet.createRow(i + 1);

Student student = list.get(i);

for (int column = 0; column < options.length; column++) {

HSSFCell no = row.createCell(0);

HSSFCell name = row.createCell(1);

HSSFCell age = row.createCell(2);

HSSFCell score = row.createCell(3);

no.setCellValue(student.getNo());

name.setCellValue(student.getName());

age.setCellValue(student.getAge());

score.setCellValue(student.getScore());

}

}

File file = new File(path);

OutputStream os = new FileOutputStream(file);

System.out.println(Common.WRITE_DATA + path);

book.write(os);

os.close();

}

『肆』 java,用POI實現將excel導入到資料庫

用到的類 是 :
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

try {
// List<String[]> 中的元素 行數組String[]為excel中的每一行
List<String[]> list = new ArrayList<String[]>();
InputStream is = new FileInputStream("test.xls");
HSSFWorkbook hwk = new HSSFWorkbook(is);// 將is流實例到 一個excel流里
HSSFSheet sh = hwk.getSheetAt(0);// 得到book第一個工作薄sheet
int rows = sh.getLastRowNum()+1 - sh.getFirstRowNum(); // 總行數
for(int i=0; i<rows; i++){
HSSFRow row = sh.getRow(i);
int cols = row.getLastCellNum()+1 - row.getFirstCellNum(); // 該行的總列數
String[] str = new String[cols]; // 用來存放該行每一列的值
for (int j = 0; j < cols; j++) {
Object col = row.getCell((short)j);
str[j] = col.toString();
}
}
......
......
循環變數 i 和 j 可以自己設定從第幾行開始讀,第幾列開始讀,下標從0開始。
然後你想做什麼判斷想做什麼數據匹配都可以自己加了。
poi.hssf.usermodel.* jar包要是網上找不到,就給我發郵件,我郵給你:[email protected]

『伍』 java excel poi 怎麼導入

1、下載poi相關jar,maven的集成如下:(把${poi.version}替換成你要的版本)

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
<scope>provided</scope>
</dependency>

2、根據poi相關api讀取sheet、row、cell,獲得excel的數據:

封裝row的對象,即每一行數據為一個對象,每個cell為對象里的一個屬性,

整個sheet的數據裝進集合里;

3、處理數據,可以對數據進行驗證或其他操作;

4、寫資料庫操作。

『陸』 java我在用poi導入文件夾下的Excel時,導入了幾百條後,後台就報Stream closed,這是為什麼

1.把你的內存弄大點。
2.升級到POI3.8(新版本對解析效率有改進)。
3.導入,到處最好統一到POI來。
4.一定要找到內存溢出的原因!!!
5.先把你的測滲尺碰試數據弄少一點,或者看看你困銷的叢談Office版本。。。

『柒』 java利用poi技術導入批量excel數據,並且分段存入資料庫怎麼解決

注意引入的都是poi的包,使用Cell,excel2003的.xls對應是HSSFCell,而之後的xlsx對應的則是XSSFCell,但是他們都繼承於Cell,所以使用Cell就可以使用兩種格式的excel導入了,下面解決excel中數據的各種格式
[java] view plain
//讀取excel
try {
request.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gbk");
// 1. 創建工廠類
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2. 創建FileUpload對象
ServletFileUpload upload = new ServletFileUpload(factory);

// 3. 判斷是否是上傳表單
// boolean b = upload.isMultipartContent(request);
// 設置上傳文件最大值
upload.setSizeMax(25 * 1024 * 1024);
// 是文件上傳表單
// 4. 解析request,獲得FileItem項
List<FileItem> fileitems = upload.parseRequest(request);
// 5. 遍歷集合
for (FileItem item : fileitems) {
// 判斷是不是普通欄位
if (!item.isFormField()) {
// 獲得流,讀取數據寫入文件
InputStream in = item.getInputStream();
Workbook book = createWorkBook(in,item.getName());
// 獲得第一個工作表對象
Sheet sheet = book.getSheetAt(0);
if(0==sheet.getLastRowNum()){
//如果沒有數據
request.setAttribute("message", "excel的sheet0中不存在數據");
request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);
}

// 第一行為標題,從第二行開始錄入
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
//標題行,用來對比方便得到數據
Row titleRow = sheet.getRow(0);
//數據行
Row row = sheet.getRow(i);
//獲得值
String value_temp= this.getValue((Cell) row.getCell(2));
}
}
}

} catch (Exception e) {
e.printStackTrace();
message="導入失敗<br/>"+message;
request.setAttribute("message",message);
request.getRequestDispatcher("/cc/util/excelToData.jsp").forward(request, response);

}

『捌』 java POI 導入excel時候日期格式轉化

Java的不會,但是思路應該是差不瞎鄭多的,你數據為Null那你就用三元表達式判斷,慶卜如果為Null就賦一個值給它。(請自行網路三元表達式)磨差頌

『玖』 java用poi實現將資料庫裡面的數據導入已經存在的excel模板中。最好有實例參考,謝謝。

這是我之前寫的用反射的將數據導入到excel中的類,具體實現,代碼里有注釋。不知道樓主持久層用的什麼東東?如果是its,建議使用ibatis的rowhandler,導出部分的實現,和下面這個類也很類似,樓主自己改改吧,這樣性能會高一些,尤其是在你處理的要寫入文件的數據,比較多的情況下。
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
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.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;

import cn.emag.framework.Util.LogName;

/**
* 導出成excel文件工具類
*/
public class Export2ExcelUtil
{

private static Logger log = Logger.getLogger(LogName.ERROR_LOG);

private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* 生成excel文件存入伺服器
* @param importdata 待導入excle文件的內容
* @param header excel」表頭「部分內容
* @param attr 與」表頭「順序對應的importdata中的成員變數名,首字母大寫
* @param fileName 導入到目標文件中,完整路徑
*/
public static void export2exc(List<Object> importdata,String[] header,String[] attr, String fileName)
{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
// 創建頭文件
writeHeader(header,sheet,wb);
// 創建文件內容
int i=1;
HSSFRow row;
for(Object object:importdata)
{
row = sheet.createRow(i++);
writeBody(object, attr, row);
}
// 寫入文件
OutputStream os = null;
try
{
os = new FileOutputStream(fileName);
wb.write(os);
}
catch (Exception e)
{
log.error("寫入文件失敗",e);
}
finally
{
try
{
os.close();
}
catch (IOException e)
{
log.error("寫入文件失敗",e);
}
}
}

/**
* 創建文件頭
* @param header 頭內容
* @param sheet
*/
public static void writeHeader(String[] header,HSSFSheet sheet,HSSFWorkbook wb)
{

HSSFRow row = sheet.createRow(0);
HSSFCellStyle cellstype = wb.createCellStyle();
cellstype = wb.createCellStyle();
cellstype.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
cellstype.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellstype.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellstype.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellstype.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFCell cell;
HSSFRichTextString str;
int n = 0;
for (String head : header)
{
sheet.setColumnWidth(n, 4000);
cell = row.createCell(n++);
cell.setCellStyle(cellstype);
str = new HSSFRichTextString(head);
cell.setCellValue(str);
}
}

/**
* 寫行內容
* @param object
* @param atrr
* @param row
* @throws Exception
*/
public static void writeBody(Object object,String[] attr,HSSFRow row)
{
int n = 0;
HSSFCell cell;
Method method;
HSSFRichTextString str;
String content=null;
for(String atr : attr)
{
cell = row.createCell(n++);
try
{
method = object.getClass().getMethod("get"+atr);
Object o = method.invoke(object);
if(null!=o)
{
if(o instanceof Date)
{
content=format.format(o);
}else
{
content = String.valueOf( method.invoke(object));
}

}else
{
content=null;
}
}
catch (SecurityException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (IllegalArgumentException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (NoSuchMethodException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (IllegalAccessException e)
{
log.error("excel寫入單元格內容失敗",e);
}
catch (InvocationTargetException e)
{
log.error("excel寫入單元格內容失敗",e);
}
str = new HSSFRichTextString(content);
cell.setCellValue(str);
}

}

}

『拾』 java poi導入excel第一次格式錯誤,改正後還是顯示錯誤

Word版本問題,Word分為2003和2007,需要分別做兼容處理

熱點內容
林肯冒險家怎麼查看配置 發布:2024-11-05 15:55:12 瀏覽:112
可以上傳球球的照片 發布:2024-11-05 15:42:59 瀏覽:738
拉箱怎麼改密碼 發布:2024-11-05 15:38:02 瀏覽:862
http怎麼配置 發布:2024-11-05 15:02:45 瀏覽:461
12級緩存 發布:2024-11-05 14:52:09 瀏覽:578
神武4腳本 發布:2024-11-05 14:48:50 瀏覽:702
王者榮耀反復解壓 發布:2024-11-05 14:31:58 瀏覽:853
存儲引擎有哪些品牌 發布:2024-11-05 14:25:59 瀏覽:39
紅薯的存儲方法 發布:2024-11-05 14:17:32 瀏覽:757
腳本錯誤彈窗口在哪裡 發布:2024-11-05 14:01:16 瀏覽:967