import
java.io.*;
import
java.util.UUID;
import
jxl.Cell;
import
jxl.Sheet;
import
jxl.Workbook;
import
jxl.read.biff.BiffException;
public
class
ExcelUtil {
private
String path;
private
String tableName;
private
String[] tableCols;
private
Workbook workbook;
public
ExcelUtil(String path, String tableName, String[] tableCols)
throws
BiffException, IOException {
this
.tableName
= tableName;
this
.tableCols
= tableCols;
this
.setPath(path);
this
.setWorkbook(Workbook.getWorkbook(
new
java.io.File(path)));
}
/**
*
获取工作薄数量
*
*
@return 工作薄数量
*/
public
int
getNumberOfSheets(Workbook book) {
return
book ==
null
?
0
: book.getNumberOfSheets();
}
/**
*
获取工作薄总行数
*
*
@param sheet
*
工作薄
*
@return 工作薄总行数
*/
public
int
getRows(Sheet sheet) {
return
sheet ==
null
?
0
: sheet.getRows();
}
/**
*
获取最大列数
*
*
@param sheet
*
工作薄
*
@return 总行数最大列数
*/
public
int
getColumns(Sheet sheet) {
return
sheet ==
null
?
0
: sheet.getColumns();
}
/**
*
获取每行单元格数组
*
*
@param sheet
*
工作薄
*
@param row
*
行数
*
@return 每行单元格数组
*/
public
Cell[] getRows(Sheet sheet,
int
row) {
return
sheet ==
null
|| sheet.getRows() < row ?
null
: sheet
.getRow(row);
}
/**
*
获取每行单元格数组
*
*
@param sheet
*
工作薄
*
@param endrow
*
结束行
*
@param endCol
*
结束列
*
@return 每行单元格数组
*/
public
Cell[][] getCells(Sheet sheet,
int
endrow,
int
endcol) {
return
getCells(sheet,
0
,
endrow,
0
,
endcol);
}
/**
*
获取每行单元格数组
*
*
@param sheet
*
工作薄
*
@param startrow
*
行数
*
@param endrow
*
结束行
*
@param startcol
*
开始列
*
@param endCol
*
结束列
*
@return 每行单元格数组
*/
public
Cell[][] getCells(Sheet sheet,
int
startrow,
int
endrow,
int
startcol,
int
endcol) {
Cell[][]
cellArray =
new
Cell[endrow - startrow][endcol - startcol];
int
maxRow =
this
.getRows(sheet);
int
maxCos =
this
.getColumns(sheet);
for
(
int
i = startrow; i < endrow && i < maxRow; i++) {
for
(
int
j = startcol; j < endcol && j < maxCos; j++) {
cellArray[i
- startrow][j - startcol] = sheet.getCell(j, i);
}
}
return
cellArray;
}
/**
*
得到行的值
*
*
@param sheet
*
@param col
*
@param startrow
*
@param endrow
*
@return
*/
public
Cell[] getColCells(Sheet sheet,
int
col,
int
startrow,
int
endrow) {
Cell[]
cellArray =
new
Cell[endrow - startrow];
int
maxRow =
this
.getRows(sheet);
int
maxCos =
this
.getColumns(sheet);
if
(col <=
0
|| col > maxCos || startrow > maxRow || endrow < startrow) {
return
null
;
}
if
(startrow <
0
)
{
startrow
=
0
;
}
for
(
int
i = startrow; i < endrow && i < maxRow; i++) {
cellArray[i
- startrow] = sheet.getCell(col, i);
}
return
cellArray;
}
/**
*
得到列的值
*
*
@param sheet
*
@param row
*
@param startcol
*
@param endcol
*
@return
*/
public
Cell[] getRowCells(Sheet sheet,
int
row,
int
startcol,
int
endcol) {
Cell[]
cellArray =
new
Cell[endcol - startcol];
int
maxRow =
this
.getRows(sheet);
int
maxCos =
this
.getColumns(sheet);
if
(row <=
0
|| row > maxRow || startcol > maxCos || endcol < startcol) {
return
null
;
}
if
(startcol <
0
)
{
startcol
=
0
;
}
for
(
int
i = startcol; i < startcol && i < maxCos; i++) {
cellArray[i
- startcol] = sheet.getCell(i, row);
}
return
cellArray;
}
/**
*
生成随机ID
*
*
@return
*/
public
static
String getStrRandomId() {
String
uuid = UUID.randomUUID().toString().replace(
"-"
,
""
);
return
uuid;
}
/**
*
组装SQL语句(扩展导入数据库额外增加字段的情况)
*
*
@param sheet
*
工作薄
*
@param startrow
*
开始行
*
@param endrow
*
结束行
*
@param startcol
*
开始列
*
@param endcol
*
结束列
*
@return SQL语句数组
*/
public
Object[] constrctCellsSql(Sheet sheet,
int
startrow,
int
endrow,
int
startcol,
int
endcol, String payTime) {
Cell[][]
cellArray = getCells(sheet, startrow, endrow, startcol, endcol);
java.util.ArrayList<String>
list =
new
java.util.ArrayList<String>();
StringBuffer
bf =
new
StringBuffer(
"INSERT
INTO "
+ tableName +
"("
);
for
(
int
i =
0
;
tableCols !=
null
&& i < tableCols.length; i++)
{
if
(i != tableCols.length -
1
)
{
bf.append(tableCols[i]).append(
","
);
}
else
{
bf.append(tableCols[i]).append(
""
);
}
}
bf.append(
")
VALUES "
);
for
(
int
i =
0
;
i < cellArray.length; i++)
{
StringBuffer
sqlBuffer =
new
StringBuffer();
sqlBuffer.append(bf.toString()
+
"("
);
Cell[]
cell = cellArray[i];
if
(tableCols !=
null
&& cell !=
null
&&
tableCols.length != cell.length)
{
continue
;
}
for
(
int
j =
0
;
j < cell.length; j++)
{
String
tmp =
""
;
if
(cell[j] !=
null
&& cell[j].getContents() !=
null
)
{
tmp
= (String) cell[j].getContents();
}
if
(j != cell.length -
1
)
{
sqlBuffer.append(
"'"
).append(tmp).append(
"',"
);
}
else
{
sqlBuffer.append(
"'"
).append(tmp).append(
"'"
);
}
}
sqlBuffer.append(
")"
);
list.add(sqlBuffer.toString());
System.out.println(sqlBuffer.toString());
}
System.out.println(list);
return
list.toArray();
}
/**
*
获取Excel文件路径
*
*
@return Excel文件路径
*/
public
String getPath() {
return
this
.path;
}
/**
*
设置Excel文件路径
*
*
@param path
*
Excel文件路径
*/
public
void
setPath(String path) {
this
.path
= path;
}
/**
*
获取工作薄集合
*/
public
Workbook getWorkbook() {
return
this
.workbook;
}
/**
*
设置工作薄集合
*
*
@param workbook
*
工作薄集合
*/
public
void
setWorkbook(Workbook workbook) {
this
.workbook
= workbook;
}
/**
*
*
@param args
*/
public
static
void
main(String[] args) {
}