本文目錄一覽:
如何用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-tw/n/142255.html