Excel的匯入和匯出功能
工作中經常會用到excel的匯入和匯出功能,這裡我提供匯入和匯出類。
匯入類(需要注意的地方我註釋裡面寫好了):
-
package cn.teacheredu.utils;
-
-
import java.io.InputStream;
-
import
java.text.SimpleDateFormat;
-
import java.util.ArrayList;
-
import java.util.Arrays;
-
import java.util.Date;
-
import
java.util.List;
-
import java.util.regex.Matcher;
-
import java.util.regex.Pattern;
-
-
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-
import org.apache.poi.ss.usermodel.Cell;
-
import org.apache.poi.ss.usermodel.DateUtil;
-
import org.apache.poi.ss.usermodel.Row;
-
import org.apache.poi.ss.usermodel.Sheet;
-
import org.apache.poi.ss.usermodel.Workbook;
-
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-
-
/**
-
* 被解析的Excel最好是什麼樣的呢?
-
* 單元格最好都是文字格式,儲存資料前自己去轉換,不用poi帶的轉換。
-
* 第一列 和最後一列 必須是必填欄位!!!這樣的你用我這個Util,得到的List就很準確了,不會出現多餘的行或列。
-
* @author TMACJ
-
* @version 0.000000.002899
-
*/
-
public
class ImportExcelUtil {
-
private
final
static String excel2003L =
".xls";
//2003- 版本的excel
-
private
final
static String excel2007U =
".xlsx";
//2007+ 版本的excel
-
-
static SimpleDateFormat sFormat =
new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
-
static
short[] yyyyMMdd = {
14,
31,
57,
58,
179,
184,
185,
186,
187,
188};
-
static
short[] HHmmss = {
20,
32,
190,
191,
192};
-
static List<
short[]> yyyyMMddList = Arrays.asList(yyyyMMdd);
-
static List<
short[]> hhMMssList = Arrays.asList(HHmmss);
-
/**
-
* 描述:獲取IO流中的資料,組裝成List<List<Object>>物件
-
* @param in,fileName
-
* @return
-
* @throws IOException
-
*/
-
public List<List<String>> getBankListByExcel(InputStream in,String fileName)
throws Exception{
-
List<List<String>> list =
null;
-
-
//建立Excel工作薄
-
Workbook work =
this.getWorkbook(in,fileName);
-
if(
null == work){
-
throw
new Exception(
"建立Excel工作薄為空!");
-
}
-
Sheet sheet =
null;
-
Row row =
null;
-
Cell cell =
null;
-
-
list =
new ArrayList<List<String>>();
-
//遍歷Excel中所有的sheet
-
for (
int i =
0; i < work.getNumberOfSheets(); i++) {
-
sheet = work.getSheetAt(i);
-
if(sheet==
null){
continue;}
-
int totalCell = sheet.getRow(
0).getPhysicalNumberOfCells();
//標題行一共有多少列
-
//遍歷當前sheet中的所有行
-
for (
int j = sheet.getFirstRowNum(); j < sheet.getLastRowNum()+
1; j++) {
-
row = sheet.getRow(j);
-
if(row==
null || validateRow(row) || row.getPhysicalNumberOfCells() < totalCell){
continue;}
//3個條件,有一個為true就不會往list里加,不僅過濾空行還過濾了列數不夠的行,這點要注意,要求表中前後的列都是必填的。
-
//遍歷所有的列
-
List<String> li =
new ArrayList<String>();
-
for (
int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
-
cell = row.getCell(y);
-
li.add(
this.getCellData(cell));
-
}
-
list.add(li);
-
}
-
// 簡單起見,這裡只解析第一個工作簿!
-
break;
-
}
-
work.close();
-
return list;
-
}
-
// 過濾空行,(其中一行的資料的確都為空,可是其原本的格式還在,並沒有連帶刪除,這樣計算出來的行數就不真實,比真實的大)
-
private boolean validateRow(Row row) throws Exception{
-
// for (Cell cell : row) {
-
//
-
// }
-
//只判斷第一列。第一列為空就代表這行的資料無效
-
if (row.getCell(
0).getCellType() == Cell.CELL_TYPE_BLANK ||
"".equals(
this.getCellData(row.getCell(
0)))) {
-
return
true;
-
}
-
return
false;
//不是空行
-
}
-
/**
-
* 描述:根據檔案字尾,自適應上傳檔案的版本
-
* @param inStr,fileName
-
* @return
-
* @throws Exception
-
*/
-
public Workbook getWorkbook(InputStream inStr,String fileType) throws Exception{
-
Workbook wb =
null;
-
if(excel2003L.equals(fileType)){
-
wb =
new HSSFWorkbook(inStr);
//2003-
-
}
else
if(excel2007U.equals(fileType)){
-
wb =
new XSSFWorkbook(inStr);
//2007+
-
}
else{
-
throw
new Exception(
"解析的檔案格式有誤!");
-
}
-
return wb;
-
}
-
-
/**
-
* 獲取單元中值(字串型別)
-
*
-
* @param cell
-
* @return
-
* @throws Exception
-
*/
-
public String getCellData(Cell cell) throws Exception {
-
String cellValue =
"";
-
if (cell !=
null) {
-
try {
-
switch (cell.getCellType()) {
-
case Cell.CELL_TYPE_BLANK:
//空白
-
cellValue =
"";
-
break;
-
case Cell.CELL_TYPE_NUMERIC:
//數值型 0----日期型別也是數值型的一種
-
if (DateUtil.isCellDateFormatted(cell)) {
-
short format = cell.getCellStyle().getDataFormat();
-
-
if (yyyyMMddList.contains(format)) {
-
sFormat =
new SimpleDateFormat(
"yyyy-MM-dd");
-
}
else
if (hhMMssList.contains(format)) {
-
sFormat =
new SimpleDateFormat(
"HH:mm:ss");
-
}
-
Date date = cell.getDateCellValue();
-
cellValue = sFormat.format(date);
-
}
else {
-
cell.setCellType(Cell.CELL_TYPE_STRING);
-
cellValue = replaceBlank(cell.getStringCellValue());
-
//Double numberDate = new BigDecimal(cell.getNumericCellValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//似乎還是有點問題
-
//cellValue = numberDate + "";
-
}
-
break;
-
case Cell.CELL_TYPE_STRING:
//字串型 1
-
cellValue = replaceBlank(cell.getStringCellValue());
-
break;
-
case Cell.CELL_TYPE_FORMULA:
//公式型 2
-
cell.setCellType(Cell.CELL_TYPE_STRING);
-
cellValue = replaceBlank(cell.getStringCellValue());
-
break;
-
case Cell.CELL_TYPE_BOOLEAN:
//布林型 4
-
cellValue = String.valueOf(cell.getBooleanCellValue());
-
break;
-
case Cell.CELL_TYPE_ERROR:
//錯誤 5
-
cellValue =
"!#REF!";
-
break;
-
}
-
}
catch (Exception e) {
-
throw
new Exception(
"讀取Excel單元格資料出錯:" + e.getMessage());
-
}
-
}
-
return cellValue;
-
}
-
-
public static String replaceBlank(String source) {
-
String dest =
"";
-
if (source !=
null) {
-
Pattern p = Pattern.compile(
"\t|\r|\n");
-
Matcher m = p.matcher(source);
-
dest = m.replaceAll(
"");
-
}
-
return dest.trim();
-
}
-
-
}
匯出類(.XLS格式):
-
package cn.teacheredu.utils;
-
-
import java.io.OutputStream;
-
import java.net.URLEncoder;
-
import java.util.ArrayList;
-
import java.util.Date;
-
import java.util.List;
-
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
-
import org.apache.commons.lang.StringUtils;
-
import org.apache.commons.lang3.time.DateFormatUtils;
-
import org.apache.poi.hssf.usermodel.HSSFCell;
-
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
-
import org.apache.poi.hssf.usermodel.HSSFFont;
-
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;
-
-
/**
-
* 通用的匯出Excel類,如果需要自定義格式的,參照此類自己再寫類或方法來實現
-
* dataList裡的每一個Object陣列一個元素(object[0])都是序號,不可放真實資料
-
* @author
TMACJ
-
*/
-
public
class ExportExcelUtil {
-
-
private String title;
// 匯出表格的表名
-
-
private String[] rowName;
// 匯出表格的列名
-
-
private List<Object[]> dataList =
new ArrayList<Object[]>();
// 物件陣列的List集合
-
-
private HttpServletResponse response;
-
-
private HttpServletRequest request;
-
-
-
/**
-
* 例項化匯出類
-
* @param title 匯出表格的表名,最好是英文,中文可能出現亂碼
-
* @param rowName 匯出表格的列名陣列
-
* @param dataList 物件陣列的List集合
-
* @param response
-
*/
-
public ExportExcelUtil(String title,String[] rowName,List<Object[]> dataList, HttpServletRequest request, HttpServletResponse response){
-
this.title=title;
-
this.rowName=rowName;
-
this.dataList=dataList;
-
this.response = response;
-
this.request = request;
-
}
-
-
// 匯出資料
-
public void exportData() throws Exception{
-
相關推薦
Excel的匯入和匯出功能
工作中經常會用到excel的匯入和匯出功能,這裡我提供匯入和匯出類。
匯入類(需要注意的地方我註釋裡面寫好了):
package cn.teacheredu.utils;
Excel的匯入和匯出功能實現
工作中經常會用到excel的匯入和匯出功能,這裡我提供匯入和匯出類。
匯入類(需要注意的地方我註釋裡面寫好了):
package cn.teacheredu.utils;
import java.io.InputStream;
import java.text.Simpl
Oracle 對於.dmp檔案的匯入和匯出功能 問題解決
因為需要,匯入磁碟上的.dmp檔案到資料庫裡,但是直接在命令列裡 imp a/[email protected] file = 'D:\dmp\a.dmp' full = y是執行不成功的而且報錯。
IMP-00013: only a DBA can import
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(88)-Excel匯入和匯出-主從表結構匯出
前言
前面一篇詳細講解了匯入匯出,本節演示混合結構的匯出功能!同時提供程式碼下載..
先看效果圖:這個一個混合的Excel,列表與自定義資訊的混合!
我們的步驟大概分為以下幾步
1.模擬資料庫資料
2.建立工作簿
3.填充固定資料
4.合併單元格
5.處理動態資料
Apache POI元件操作Excel(匯入和匯出)
Apache的POI元件是Java操作Microsoft Office辦公套件的強大API,其中對Word,Excel和PowperPoint都有支援,當然使用較多的還是Excel,因為Word和PowerPoint用程式動態操作的應用較少。那麼本文就結合POI來介紹一下
SpringBoot通過WorkBook快速實現對Excel的匯入和匯出(包括資料校驗)
之前轉載過一篇對Excel基本操作相關的文章,這篇文章的瀏覽量迅速飆升,以至於在我部落格的熱門文章中排到了第三的位置,不過那篇轉載的文章實用性差並且講解不是很清晰,所以打算趁著今天休息,寫一篇關於SpringBoot通過WorkBook快速實現對Excel的匯入、匯出、資料校驗的文章,也是便於日後查
PDF電子發票解析成excel,支援批量解析和匯出功能
PDF電子發票解析成excel,支援批量解析和匯出功能
https://blog.csdn.net/m0_38035006/article/details/84880018#comments
https://www.promiseblog.cn
合計稅額 13.27 貨物名稱 (詳見銷貨清單) 受票方識
【MATLAB】匯入和匯出Excel資料
1 寫在前面
MATLAB 中有時候需要用到外部的資料進行模擬計算,或者有時需要把 MATLAB 中的資料匯出到外部表格,這就用到 Excel 與 MATLAB 之間的命令函式。
2 匯入
A=xlsread('xxx.xlsx') # xxx 為檔名稱
其中
視訊編輯器-MovieMator簡潔使用-功能和快速入門-建立專案、匯入和匯出
視訊編輯器-MovieMator 簡潔使用-建立專案、匯入和匯出
MovieMator是一個簡單但功能強大的免費視訊編輯軟體。它不僅允許使用者進行基本的編輯工作,如修剪、裁剪、分
Java實現Excel的匯入和匯出
一、下載jxl.jar包匯入到工程中
二、新建Book.java
package com.cc.reflection;
public class Book {
private int id;
private String name;
private Strin
在C#中關於excel的匯入和匯出操作
一、先來看看最常見的匯入操作吧!private void Import()
{
//開啟excel選擇框 OpenFileDialog frm = new OpenFileDi
PHP Excel的匯入與匯出功能
為什麼做這件事:也許原因大家都各不相同,可能有的是為了工作,可能有的是為了學習,我的原因很簡單,就是為了玩,正應為好玩,才沒事的時候搞一搞。
這件事情很簡單,你需要引入一個github庫
maatwebsite/excel
然後http://www.maatwebsi
使用PHPExcel實現Excel檔案的匯入和匯出
在之前有寫過一篇文章講述了使用,這種方式生成Excel檔案,生成速度很快,但是有缺點是:
1.單純的生成Excel檔案,生成的檔案沒有樣式,單元格屬性(填充色,寬度,高度,邊框顏色...)不能自定義;
2.生成的檔案雖然可以開啟,但是相容性很差,每次開啟,都會報一個警告:今
匯入和匯出Excel通用方法
package com.javen.service;
import java.io.File;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List
王昕的 java 下Excel的匯入和匯出,資料校驗
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import j
java匯入和匯出excel文件(支援xls,xlsx格式)
好久沒寫部落格了,寫個簡單的估計也是常用的,歡迎評判指導交流
相關jar包,可以先百度,因為時間問題後續再補上
package main.java;
import java.io.File;
import java.io.FileInputStream;
import
Java中Excel表格資料的匯入和匯出步驟和方法
Java Excel API既可以從本地檔案系統的一個檔案(.xls),也可以從輸入流中讀取Excel資料表。讀取Excel資料表的第一步是建立Workbook(術 語:工作薄),下面的程式碼片段舉例說明了應該如何操作:(完整程式碼見ExcelReading.java)
在Myeclipse中完成程式碼自動填充,自動提示功能的方法:以及如何在匯入和匯出配置檔案。
1.點選 java-editor-Content Assist 找到 Auto Activation triggers for java”這個選項。其實就是指觸發程式碼提示的就是“.”這個符號。 將它改成.abcdefghijklmnopqrstuvwxyz(,
2.專
如何使用JavaScript匯入和匯出Excel檔案
本文由葡萄城技術團隊於原創並首發
轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。
JavaScript是一個涵蓋多種框架、直譯式、可以輕鬆自定義客戶端的指令碼語言,在 Web 應用程式中,更加易於編碼和維護。而Excel 作為一款深受使用
4.5-匯入和匯出容器
1.匯出容器
如果要匯出本地某個容器,可以使用 docker export 命令。
格式為:docker export [OPTIONS] CONTAINER
主要選項:
-o, --output string :匯出到一個指定檔案中。
$&n