java導出文件,java導出文件到本地

本文目錄一覽:

java導出數據到excel的幾種方法的比較

Excel的兩種導出入門方法(JAVA與JS)

最近在做一個小項目作為練手,其中使用到了導出到Excel表格,一開始做的是使用JAVA的POI導出的,但因為我的數據是爬蟲爬出來的,數據暫時並不保存在數據庫或後台,所以直接顯示在HTML的table,需要下載時又要將數據傳回後台然後生成Excel文件,最後再從服務器下載到本地,過程幾度經過網絡傳輸,感覺比較耗時與浪費性能,於是想着在HTML中的Table直接導到Excel中節約資源

JAVA導出EXCEL(.xls)

導出Excel用的插件是apache的poi.jar,maven地址如下

dependency

groupIdorg.apache.poi/groupId

artifactIdpoi/artifactId

version3.17/version/dependency

1. 簡單應用

先來個簡化無樣式的Excel導出,由於我的數據存在JSON中,所以形參是JSONArray,朋友們根據自己的實際數據類型(Map,List,Set等)傳入即可 ,代碼如下

/**

* 創建excel並填入數據

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 數據頭

* @param body 主體數據

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {        //創建一個excel工作簿

HSSFWorkbook workbook = new HSSFWorkbook();        //創建一個sheet工作表

HSSFSheet sheet = workbook.createSheet(“學生信息”);

//創建第0行表頭,再在這行里在創建單元格,並賦值

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;        for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));//設置值

}

//將主體數據填入Excel中

for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));//設置值

}

}        return workbook;

}

創建好Excel對象並填好值後(就是得到workbook),就是將這個對象以文件流的形式輸出到本地上去,代碼如下

/**

* 文件輸出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

至此Excel的導出其實已經做完了。

2. 添加樣式後導出

但通常這並不能滿足我們的需求,因為通常是需要設置Excel的一些樣式的,如字體、居中等等,設置單元格樣式主要用到這個類(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

現在說說HSSFCellStyle都能幹些什麼

HSSFCellStyle cellStyle = workbook.createCellStyle();//創建單元格樣式對象1.設置字體

HSSFFont font = workbook.createFont();  //font.setFontHeight((short)12);//這個設置字體會很大

font.setFontHeightInPoints((short)12);//這才是我們平常在Excel設置字體的值

font.setFontName(“黑體”);//字體:宋體、華文行楷等等

cellStyle.setFont(font);//將該字體設置進去2.設置對齊方式

cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment參考下面給出的參數

//以下是最常用的三種對齊分別是居中,居左,居右,其餘的寫代碼的時候按提示工具查看即可

HorizontalAlignment.CENTER

HorizontalAlignment.LEFT

HorizontalAlignment.RIGHT3.設置邊框

cellStyle.setBorderBottom(border); // 下邊框

cellStyle.setBorderLeft(border);// 左邊框

cellStyle.setBorderTop(border);// 上邊框

cellStyle.setBorderRight(border);// 右邊框

//border的常用參數如下

BorderStyle.NONE 無邊框

BorderStyle.THIN 細邊框

BorderStyle.MEDIUM 中等粗邊框

BorderStyle.THICK 粗邊框//其餘的我也描述不清是什麼形狀,有興趣的到時可以直接測試

在經過一系列的添加樣式之後,最後就會給單元格設置樣式

cell.setCellStyle(cellStyle);

3. 自動調整列寬

sheet.autoSizeColumn(i);//i為第幾列,需要全文都單元格居中的話,需要遍歷所有的列數

4. 完整的案例

public class ExcelUtils {    /**

* 創建excel並填入數據

* @author LiQuanhui

* @date 2017年11月24日 下午5:25:13

* @param head 數據頭

* @param body 主體數據

* @return HSSFWorkbook

*/

public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet(“學生信息”);

HSSFRow row = sheet.createRow(0);

HSSFCell cell = null;

HSSFCellStyle cellStyle = workbook.createCellStyle();

setBorderStyle(cellStyle, BorderStyle.THIN);

cellStyle.setFont(setFontStyle(workbook, “黑體”, (short) 14));

cellStyle.setAlignment(HorizontalAlignment.CENTER);

for (int i = 0; i head.size(); i++) {

cell = row.createCell(i);

cell.setCellValue(head.getString(i));

cell.setCellStyle(cellStyle);

}

HSSFCellStyle cellStyle2 = workbook.createCellStyle();

setBorderStyle(cellStyle2, BorderStyle.THIN);

cellStyle2.setFont(setFontStyle(workbook, “宋體”, (short) 12));

cellStyle2.setAlignment(HorizontalAlignment.CENTER);        for (int i = 0, isize = body.size(); i isize; i++) {

row = sheet.createRow(i + 1);

JSONArray stuInfo = body.getJSONArray(i);            for (int j = 0, jsize = stuInfo.size(); j jsize; j++) {

cell = row.createCell(j);

cell.setCellValue(stuInfo.getString(j));

cell.setCellStyle(cellStyle2);

}

}        for (int i = 0, isize = head.size(); i isize; i++) {

sheet.autoSizeColumn(i);

}        return workbook;

}    /**

* 文件輸出

* @author LiQuanhui

* @date 2017年11月24日 下午5:26:23

* @param workbook 填充好的workbook

* @param path 存放的位置

*/

public static void outFile(HSSFWorkbook workbook,String path) {

OutputStream os=null;        try {

os = new FileOutputStream(new File(path));

workbook.write(os);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}        try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}    /**

* 設置字體樣式

* @author LiQuanhui

* @date 2017年11月24日 下午3:27:03

* @param workbook 工作簿

* @param name 字體類型

* @param height 字體大小

* @return HSSFFont

*/

private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {

HSSFFont font = workbook.createFont();

font.setFontHeightInPoints(height);

font.setFontName(name);        return font;

}    /**

* 設置單元格樣式

* @author LiQuanhui

* @date 2017年11月24日 下午3:26:24

* @param workbook 工作簿

* @param border border樣式

*/

private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {

cellStyle.setBorderBottom(border); // 下邊框

cellStyle.setBorderLeft(border);// 左邊框

cellStyle.setBorderTop(border);// 上邊框

cellStyle.setBorderRight(border);// 右邊框

}

}

POI的功能其實還是很強大的,這裡只介紹了Excel的一丁點皮毛給入門的查看,如果想對Excel進行更多的設置可以查看下面的這篇文章,有着大量的使用說明。

空谷幽瀾的POI使用詳解

JS導出EXCEL(.xls)

java的Excel導出提供了強大的功能,但也對服務器造成了一定資源消耗,若能使用客戶端的資源那真是太好了

1. 簡單應用

JS的導出Excel非常簡單,只需要引用Jquery和tableExport.js並設置一個屬性即可

script src=”%=basePath%/static/js/tableExport.js” type=”text/javascript”/scriptscript type=”text/javascript”

function exportExcelWithJS(){    //獲取要導出Excel的表格對象並設置tableExport方法,設置導出類型type為excel

$(‘#tableId’).tableExport({      type:’excel’

});

}/scriptbutton class=”btn btn-primary”  type=”button” style=”float: right;” onclick=”exportExcelWithJS()”下載本表格/button

JS的導出就完成了,是不是特別簡單

2. 進階應用

但上面僅僅是個簡單的全表無樣式的導出

這tableExport.js還有一些其他功能,忽略行,忽略列,設置樣式等,屬性如下

script type=”text/javascript”

function exportExcelWithJS(){    //獲取要導出Excel的表格對象並設置tableExport方法,設置導出類型type為excel

$(‘#tableId’).tableExport({      type:’excel’,//導出為excel

fileName:’2017工資表’,//文件名

worksheetName:’11月工資’,//sheet表的名字

ignoreColumn:[0,1,2],//忽略的列,從0開始算

ignoreRow:[2,4,5],//忽略的行,從0開始算

excelstyles:[‘text-align’]//使用樣式,不用填值只寫屬性,值讀取的是html中的

});

}/script

如上既是JS的進階導出,操作簡單,容易上手

但有個弊端就是分頁的情況下,只能導出分頁出的數據,畢竟這就是導出HTML內TABLE有的東西,數據在數據庫或後台的也就無能為力,所以這個適合的是無分頁的TABLE導出

3. 額外說明

tableExport.js是gitHub上的hhurz大牛的一個開源項目,需要下載該JS的可以點擊鏈接進入gitHub下載或在我的百度網盤下載 密碼:oafu

tableExport.js不僅僅是個導出Excel的JS,他還可以導出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多種格式,具體使用可以參考hhurz的使用介紹

本人在之前找了好幾個導出Excel的都有各種各樣的問題(亂碼,無響應,無樣式),這個是目前找到最好的一個了,能解決亂碼問題,能有樣式,非常強大

java導出PDF文檔

java導出pdf需要用到iText庫,iText是著名的開放源碼的站點sourceforge一個項目,是用於生成PDF文檔的一個java類庫。通過iText不僅可以生成PDF或rtf

的文檔,而且可以將XML、Html文件轉化為PDF文件。

iText的安裝非常方便,下載iText.jar文件後,只需要在系統的CLASSPATH中加入iText.jar的路徑,在程序中就可以使用

iText類庫了。

代碼如下:

public class createPdf {

//自己做的一個簡單例子,中間有圖片之類的

//先建立Document對象:相對應的 這個版本的jar引入的是com.lowagie.text.Document

Document document = new Document(PageSize.A4, 36.0F, 36.0F, 36.0F, 36.0F);

public void getPDFdemo() throws DocumentException, IOException{

//這個導出用的是 iTextAsian.jar 和iText-2.1.3.jar 屬於比較老的方法。 具體下在地址見:

//首先

//字體的定義:這裡用的是自帶的jar裏面的字體

BaseFont bfChinese = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, false);

// 當然你也可以用你電腦裏面帶的字體庫

//BaseFont bfChinese = BaseFont.createFont(“C:/WINDOWS/Fonts/SIMSUN.TTC,1”,BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

//定義字體 注意在最新的包裏面 顏色是封裝的

Font fontChinese8 = new Font(bfChinese, 10.0F, 0, new Color(59, 54, 54));

//生成pdf的第一個步驟:

//保存本地指定路徑

saveLocal();

document.open();

ByteArrayOutputStream ba = new ByteArrayOutputStream();

// PdfWriter writer = PdfWriter.getInstance(document, ba);

document.open();

//獲取此編譯的文件路徑

String path = this.getClass().getClassLoader().getResource(“”).getPath();

//獲取根路徑

String filePath = path.substring(1, path.length()-15);

//獲取圖片路徑 找到你需要往pdf上生成的圖片

//這裡根據自己的獲取的路徑寫 只要找到圖片位置就可以

String picPath = filePath +”\\WebContent” +”\\images\\”;

//往PDF中添加段落

Paragraph pHeader = new Paragraph();

pHeader.add(new Paragraph(” 你要生成文字寫這裡”, new Font(bfChinese, 8.0F, 1)));

//pHeader.add(new Paragraph(“文字”, 字體 可以自己寫 也可以用fontChinese8 之前定義好的 );

document.add(pHeader);//在文檔中加入你寫的內容

//獲取圖片

Image img2 = Image.getInstance(picPath +”ccf-stamp-new.png”);

//定義圖片在文檔中顯示的絕對位置

img2.scaleAbsolute(137.0F, 140.0F);

img2.setAbsolutePosition(330.0F, 37.0F);

//將圖片添加到文檔中

document.add(img2);

//關閉文檔

document.close();

/*//設置文檔保存的文件名

response.setHeader(“Content-

disposition”, “attachment;filename=\””+ new String((“CCF會員資格確認

函.pdf”).getBytes(“GBK”),”ISO-8859-1″) + “\””);

//設置類型

response.setContentType(“application/pdf”);

response.setContentLength(ba.size());

ServletOutputStream out = response.getOutputStream();

ba.writeTo(out);

out.flush();*/

}

public static void main(String[]args) throws DocumentException, IOException{

createPdf pdf= new createPdf();

pdf.getPDFdemo();

}

//指定一個文件進行保存 這裡吧文件保存到D盤的text.pdf

public void saveLocal() throws IOException, DocumentException{

//直接生成PDF 制定生成到D盤test.pdf

File file = new File(“D:\\text2.pdf”);

file.createNewFile();

PdfWriter.getInstance(document, new FileOutputStream(file));

}

}

如何導出Java應用程序的內存快照文件

問了一下我之前的在遠標教育的大學同學,他說在windows下找到要導出的Java應用的進程號。比如我要導出本機的Eclipse的內存快照,因為Eclipse也是Java應用。首先要找到Eclispe的進程號。在命令行輸入:tasklist | findstr eclipse。

可以看到,Eclispe的進程號是8052。然後在命令行輸入:jmap -dump:format=b,file=elipse.hprof 8052。file=elipse.hprof意思是設置生成的文件名,8052就是Java程序的進程號。

如果是在Linux系統下面,在命令行輸入:ps -ef | grep eclipse。

可以看到eclipse的進程號是2622。同樣,在命令行輸入:jmap -dump:format=b,file=elipse.hprof 2622。

把生成的elipse.hprof在SecureCRT命令行輸入:sz elipse.hprof,把文件下載到本地,用MAT之類的工具進行分析就可以了。

eclipse可以把java程序如何導出打包成.jar文件?

第一種方法 利用Eclipse的導出功能

Step1:在Eclipse的資源管理器中選中你要打包的項目,右鍵點擊,選擇「導出」項,彈出導出對話框,在下面的Java目錄下選擇「JAR 文件」項,下一步,在導出目標路徑TextField框中輸入你想保存的路徑,單擊「完成」。

Step2:進入Step1中保存jar文件的目錄下,用壓縮文件管理器打開jar文件,進入META-INF\目錄下,打開MINIFEST.MF文件,對MINIFEST.MF文件進行編寫,格式如下:

Manifest-Version: 1.0

Main-Class: App

Class-Path: jar/jakarta-poi.jar jar/Work.jar jar/Service.jar

Created-By: 1.4.2_03-b02 (Sun Microsystems Inc.)

請在文本格式下編寫,每個空處只有一個空格,文本不能多餘兩個空行.

Manifest-Version: 1.0 告訴我們使用的是1.0的manifest文件,第一行定義manifest的格式

Main-Class: 主程序入口類名

Class-Path: 引用包路徑,包之間空格隔開

Created-By: 創建者信息

編寫完之後保存。

Step3:將引用包放在指定的路徑上,與manifest文件中的Class-Path一致.也可不寫Class-Path,將引用包解開仍進導出的 jar 包即可,注意包路徑.

Step4 :建立批處理文件.bat或.cmd如下start.cmd:

java -jar App.jar

原創文章,作者:CXCA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/142650.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
CXCA的頭像CXCA
上一篇 2024-10-12 09:44
下一篇 2024-10-12 09:44

相關推薦

發表回復

登錄後才能評論