java導出excel,java導出excel數據量大 優化

本文目錄一覽:

如何用java將數據庫中的表導出到excel

第一步:如何用POI操作Excel

@Test

public void createXls() throws Exception{

//聲明一個工作薄

HSSFWorkbook wb = new HSSFWorkbook();

//聲明表

HSSFSheet sheet = wb.createSheet(“第一個表”);

//聲明行

HSSFRow row = sheet.createRow(7);

//聲明列

HSSFCell cel = row.createCell(3);

//寫入數據

cel.setCellValue(“你也好”);

FileOutputStream fileOut = new FileOutputStream(“d:/a/b.xls”);

wb.write(fileOut);

fileOut.close();

}

第二步:導出指定數據庫的所有表

分析:

1:某個數數據庫有多少表,表名是什麼?―――DataBaseMetadate.getMetadate().getTables(null,null,null,new String[]{Table}); – excel的文件名稱。

2:對每一個表進行select * 操作。 - 每一個sheet的名稱。

3:分析表結構,rs.getMetadate(); ResultSetMedated

4:多個列,列名是什麼.- 字段名就是sheet的第一行信息。

5:獲取每一行的數據 – 放到sheet第一行以後。

@Test

public void export() throws Exception{

//聲明需要導出的數據庫

String dbName = “focus”;

//聲明book

HSSFWorkbook book = new HSSFWorkbook();

//獲取Connection,獲取db的元數據

Connection con = DataSourceUtils.getConn();

//聲明statemen

Statement st = con.createStatement();

//st.execute(“use “+dbName);

DatabaseMetaData dmd = con.getMetaData();

//獲取數據庫有多少表

ResultSet rs = dmd.getTables(dbName,dbName,null,new String[]{“TABLE”});

//獲取所有表名 - 就是一個sheet

ListString tables = new ArrayListString();

while(rs.next()){

String tableName = rs.getString(“TABLE_NAME”);

tables.add(tableName);

}

for(String tableName:tables){

HSSFSheet sheet = book.createSheet(tableName);

//聲明sql

String sql = “select * from “+dbName+”.”+tableName;

//查詢數據

rs = st.executeQuery(sql);

//根據查詢的結果,分析結果集的元數據

ResultSetMetaData rsmd = rs.getMetaData();

//獲取這個查詢有多少行

int cols = rsmd.getColumnCount();

//獲取所有列名

//創建第一行

HSSFRow row = sheet.createRow(0);

for(int i=0;icols;i++){

String colName = rsmd.getColumnName(i+1);

//創建一個新的列

HSSFCell cell = row.createCell(i);

//寫入列名

cell.setCellValue(colName);

}

//遍曆數據

int index = 1;

while(rs.next()){

row = sheet.createRow(index++);

//聲明列

for(int i=0;icols;i++){

String val = rs.getString(i+1);

//聲明列

HSSFCell cel = row.createCell(i);

//放數據

cel.setCellValue(val);

}

}

}

con.close();

book.write(new FileOutputStream(“d:/a/”+dbName+”.xls”));

}

java怎麼導出excel表格

通過這個例子,演示以下如何用java生成excel文件:

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

import java.io.FileOutputStream;

import java.io.IOException;

publicclass CreateCells

{

publicstaticvoid main(String[] args)

throws IOException

{

HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook對象

HSSFSheet sheet = wb.createSheet(“new sheet”);//建立新的sheet對象

// Create a row and put some cells in it. Rows are 0 based.

HSSFRow row = sheet.createRow((short)0);//建立新行

// Create a cell and put a value in it.

HSSFCell cell = row.createCell((short)0);//建立新cell

cell.setCellValue(1);//設置cell的整數類型的值

// Or do it on one line.

row.createCell((short)1).setCellValue(1.2);//設置cell浮點類型的值

row.createCell((short)2).setCellValue(“test”);//設置cell字符類型的值

row.createCell((short)3).setCellValue(true);//設置cell布爾類型的值

HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell樣式

cellStyle.setDataFormat(HSSFDataFormat.getFormat(“m/d/yy h:mm”));//設置cell樣式為定製的日期格式

HSSFCell dCell =row.createCell((short)4);

dCell.setCellValue(new Date());//設置cell為日期類型的值

dCell.setCellStyle(cellStyle); //設置該cell日期的顯示格式

HSSFCell csCell =row.createCell((short)5);

csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//設置cell編碼解決中文高位字節截斷

csCell.setCellValue(“中文測試_Chinese Words Test”);//設置中西文結合字符串

row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立錯誤cell

// Write the output to a file

FileOutputStream fileOut = new FileOutputStream(“workbook.xls”);

wb.write(fileOut);

fileOut.close();

}

}

怎麼用java實現導出excel

/**

 * @author liuwu

 * Excel的導入與導出

 */

@SuppressWarnings({ “unchecked” })

public class ExcelOperate {

/**

 * @author liuwu

 * 這是一個通用的方法,利用了JAVA的反射機制,

 * 可以將放置在JAVA集合中並且符合一定條件的數據以EXCEL的形式輸出到指定IO設備上

 * @param title 表格標題名

 * @param headers 表格屬性列名數組

 * @param dataset 需要顯示的數據集合,集合中一定要放置符合javabean風格的類的對象。

 *  此方法支持的 javabean屬性【數據類型有java基本數據類型及String,Date,byte[](圖片轉成字節碼)】

 * @param out 與輸出設備關聯的流對象,可以將EXCEL文檔導出到本地文件或者網絡中

 * @param pattern  如果有時間數據,設定輸出格式。默認為”yyy-MM-dd”

 * @throws IOException 

 */

public static void exportExcel(String title, String[] headers,Collection? dataset, OutputStream out, String pattern) throws IOException {

// 聲明一個工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

// 生成一個表格

HSSFSheet sheet = workbook.createSheet(title);

// 設置表格默認列寬度為15個字節

sheet.setDefaultColumnWidth((short) 20);

// 生成一個樣式

HSSFCellStyle style = workbook.createCellStyle();

// 設置這些樣式

style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

style.setBorderBottom(HSSFCellStyle.BORDER_THIN);

style.setBorderLeft(HSSFCellStyle.BORDER_THIN);

style.setBorderRight(HSSFCellStyle.BORDER_THIN);

style.setBorderTop(HSSFCellStyle.BORDER_THIN);

style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

// 生成一個字體

HSSFFont font = workbook.createFont();

font.setColor(HSSFColor.VIOLET.index);

font.setFontHeightInPoints((short) 12);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

// 把字體應用到當前的樣式

style.setFont(font);

// 生成並設置另一個樣式

HSSFCellStyle style2 = workbook.createCellStyle();

style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);

style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);

style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);

style2.setBorderRight(HSSFCellStyle.BORDER_THIN);

style2.setBorderTop(HSSFCellStyle.BORDER_THIN);

style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);

style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

// 生成另一個字體

HSSFFont font2 = workbook.createFont();

font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);

// 把字體應用到當前的樣式

style2.setFont(font2);

// 產生表格標題行

HSSFRow row = sheet.createRow(0);

for (short i = 0; i  headers.length; i++) {

HSSFCell cell = row.createCell(i);

cell.setCellStyle(style);

HSSFRichTextString text = new HSSFRichTextString(headers[i]);

cell.setCellValue(text);

}

// 遍歷集合數據,產生數據行

Iterator? it = dataset.iterator();

int index = 0;

while (it.hasNext()) {

index++;

row = sheet.createRow(index);

Object t =  it.next();

// 利用反射,根據javabean屬性的先後順序,動態調用getXxx()方法得到屬性值

Field[] fields = t.getClass().getDeclaredFields();

for (short i = 0; i  fields.length; i++) {

HSSFCell cell = row.createCell(i);

cell.setCellStyle(style2);

Field field = fields[i];

String fieldName = field.getName();

String getMethodName = “get”

+ fieldName.substring(0, 1).toUpperCase()

+ fieldName.substring(1);//注意 實體get Set不要自己改名字不然反射會有問題

try {

Class tCls = t.getClass();

Method getMethod = tCls.getMethod(getMethodName,new Class[] {});

Object value = getMethod.invoke(t, new Object[] {});

HSSFRichTextString richString = new HSSFRichTextString(value.toString());

HSSFFont font3 = workbook.createFont();

font3.setColor(HSSFColor.BLUE.index);

richString.applyFont(font3);

cell.setCellValue(richString);

} catch (SecurityException e) {

e.printStackTrace();

e=null;

} catch (NoSuchMethodException e) {

e.printStackTrace();

e=null;

} catch (IllegalArgumentException e) {

e.printStackTrace();

e=null;

} catch (IllegalAccessException e) {

e.printStackTrace();

e=null;

} catch (InvocationTargetException e) {

e.printStackTrace();

e=null;

} finally {

// 清理資源

}

}

}

try {

workbook.write(out);

} catch (IOException e) {

e.printStackTrace();

e=null;

}

}

}

java怎樣輸出excel文件

//java生成簡單的Excel文件

package beans.excel;

import java.io.IOException;

import java.io.OutputStream;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

 

public class SimpleExcelWrite {

    public void createExcel(OutputStream os) throws WriteException,IOException{

        //創建工作薄

        WritableWorkbook workbook = Workbook.createWorkbook(os);

        //創建新的一頁

        WritableSheet sheet = workbook.createSheet(“First Sheet”,0);

        //創建要顯示的內容,創建一個單元格,第一個參數為列坐標,第二個參數為行坐標,第三個參數為內容

        Label xuexiao = new Label(0,0,”學校”);

        sheet.addCell(xuexiao);

        Label zhuanye = new Label(1,0,”專業”);

        sheet.addCell(zhuanye);

        Label jingzhengli = new Label(2,0,”專業競爭力”);

        sheet.addCell(jingzhengli);

        

        Label qinghua = new Label(0,1,”清華大學”);

        sheet.addCell(qinghua);

        Label jisuanji = new Label(1,1,”計算機專業”);

        sheet.addCell(jisuanji);

        Label gao = new Label(2,1,”高”);

        sheet.addCell(gao);

        

        Label beida = new Label(0,2,”北京大學”);

        sheet.addCell(beida);

        Label falv = new Label(1,2,”法律專業”);

        sheet.addCell(falv);

        Label zhong = new Label(2,2,”中”);

        sheet.addCell(zhong);

        

        Label ligong = new Label(0,3,”北京理工大學”);

        sheet.addCell(ligong);

        Label hangkong = new Label(1,3,”航空專業”);

        sheet.addCell(hangkong);

        Label di = new Label(2,3,”低”);

        sheet.addCell(di);

        

        //把創建的內容寫入到輸出流中,並關閉輸出流

        workbook.write();

        workbook.close();

        os.close();

    }

    

}

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

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

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29

發表回復

登錄後才能評論