Javaアクションexcel-互換office 2007以降
7973 ワード
前言
office 2007のバージョンでは標準的なアップグレードがあり、最も明らかなのはexcelファイルのファイル名接尾辞(ファイル拡張子)がxlsからxlsxに変わったことです.xls形式でxlsx形式のファイルを処理するのは操作できないので、注意が必要です.
逆に、xlsx形式のファイルを操作する方法でファイル拡張子(ファイルビット接尾辞)をxlsに操作するのは問題ありません.
本質的にはoffice以降のバージョンは以前のバージョンと互換性があるため、これはOffice開発コンポーネントpoiでも提案されている.すなわち、下向きに互換性があり、あるいは後ろ向きに互換性があり、古いシステムだけのものは新しいシステムで正常に使用することができます.
ここではlog 4 j 2を使用していますが、環境にログが構成されていない場合は、ログコードを削除してSystemに変更することができます.out,println();
log 4 j 2に興味がある場合は、APACHE LOG 4 Jを参照してください™ 2学習ノート-log 4 j 2環境各種タイプ出力+mavenmysqlスクロールファイルコンソール非同期フィルタに配備
maven依存
org.apache.poi
poi
3.14
org.apache.poi
poi-ooxml
3.14
org.apache.poi
poi-ooxml-schemas
3.14
org.apache.xmlbeans
xmlbeans
2.6.0
poiはofficeファイルを専門に操作する無料のAPIです.http://poi.apache.org/
くだらないことは言わないで、直接コードを貼ってください.
・excelファイルreadOfficeExcelFileの読み込み
・元のexcelファイルの再書き込み-末尾の判断がないため、writeOfficeExcelFileを上書きする可能性があります
・プログラムはexcleファイルを新規作成し、いくつかのデータを埋め込む.
列挙クラスは定数を提供します.この例では、
package com.bestcxx.mavenstu.mavenssh.util;
/**
* @theme -
* @author wujie
*/
public enum EnumUtil {
//
FILE_OFFICE_EXCEL_NAME("officeExcelDemo.xlsx"),
FILE_OFFICE_EXCEL_PATH("src/main/webapp/WEB-INF/file"),//office excel
COMMON_DATABASE_PROPERTIES("config/jdbc.properties"),
COMMON_ENCODING("utf-8"),
FILE_TXT_PATH("src/main/webapp/WEB-INF/file/filetxt.txt"),//src/main/resources/file/filetxt.txt ,
WECHAT_APPID("appid"), // appid
WECHAT_APPSECRET("appsecret"), // appsecret
PROXY_SERVICEPORT_SHEZHI("0"), // - ,0-NO,1-YES
PROXY_PROXYHOST("192.168.1.1"), // - IP
PROXY_PROXYPORT("8080"); // -
private String temStr;
private EnumUtil(String temStr){
this.temStr=temStr;
}
@Override
public String toString() {
return String.valueOf (this.temStr);
}
}
ツールクラス
package com.bestcxx.mavenstu.mavenssh.file;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
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.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
*
* @theme excel
* @author wujie
* @Datetime 2017 3 24 2:52:10
* HSSF - Microsoft Excel 。
* XSSF - Microsoft Excel OOXML 。
* HWPF - Microsoft Word 。
* HSLF - Microsoft PowerPoint 。
* HDGF - Microsoft Visio 。
*/
public class FileOfficeExcel {
private static Logger logger=LogManager.getLogger(FileOfficeExcel.class);
/**
*
* @instruction excel
* @Datetime 2017 3 27 3:59:15
* @param excelPath
* @param excelName officeExcelDemo.xlsx
*/
public void readOfficeExcelFile(String excelPath,String excelName) {
try {
File file = new File(excelPath, excelName);
//
FileInputStream fi;
fi = new FileInputStream(file);
// excel Workbook
Workbook wb;
wb = WorkbookFactory.create(fi);
// sheet -
Sheet sheet = wb.getSheetAt(0);
//
int rowNum = sheet.getLastRowNum() + 1;// 1, , 0
//logger.info("
sheet :"+rowNum);
// - i
for(int i=2;i
テストクラス
package com.bestcxx.mavenstu.mavenssh.file;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Ignore;
import org.junit.Test;
import com.bestcxx.mavenstu.mavenssh.util.EnumUtil;
public class FileOfficeExcelTest {
private static Logger logger=LogManager.getLogger(FileOfficeExcelTest.class);
@Test
//@Ignore
public void testReadOfficeExcelFile(){
FileOfficeExcel f=new FileOfficeExcel();
//excel
String excelPath = EnumUtil.FILE_OFFICE_EXCEL_PATH.toString();
//excel
String excelName = EnumUtil.FILE_OFFICE_EXCEL_NAME.toString();
f.readOfficeExcelFile(excelPath,excelName);
}
@Test
public void testWriteOfficeExcelFile(){
FileOfficeExcel f=new FileOfficeExcel();
//excel
String excelPath = EnumUtil.FILE_OFFICE_EXCEL_PATH.toString();
//excel
String excelName = "test.xlsx";
f.writeOfficeExcelFile(excelPath,excelName);
}
@Test
public void testCreateOfficeExcelFile(){
FileOfficeExcel f=new FileOfficeExcel();
//excel
String excelPath = EnumUtil.FILE_OFFICE_EXCEL_PATH.toString();
//excel
String excelName = "test.xlsx";
f.createOfficeExcelFile(excelPath,excelName);
}
}
本文は作者のオリジナルに属して、転載して声明を下さい:http://blog.csdn.net/bestcxx
+20170811補足+生成したファイルをダウンロードする場合、file Nameはname.xlsまたはname.xlsxフォーマット
OutputStream out = null;
try {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
out = response.getOutputStream();
wb.write(out);//Workbook wb = new HSSFWorkbook();
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (wb != null) {wb.close();}
if (out != null) {out.close();}
} catch (IOException e) {
e.printStackTrace();
}
}
+20180710補足+ファイルフィールドは、テキスト、数値、日付の3種類に分けられ、空の場合があります.
if(null!=row.getCell(1)){//
row.getCell(1).getStringCellValue();
}
if(null!=row.getCell(2)){//
// ,Excel , dubbo ,
(int)row.getCell(2).getNumericCellValue();
}
if(null!=row.getCell(7)){//
e.setBusinessInsuranceAmount(new BigDecimal(row.getCell(7).getNumericCellValue()));
}
if(null!=row.getCell(3)){//
//
row.getCell(3).getDateCellValue();
}