apache poi 讀取、建立excel 2003、2007
尊重原創 傳送門先行: http://www.tangjinyi.com/index.php/archives/81
apache poi 讀取excel 2003.2007
jar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.text.DecimalFormat;
import
java.text.SimpleDateFormat;
import
java.util.Date;
import
java.util.LinkedList;
import
java.util.List;
import
org.apache.poi.hssf.usermodel.HSSFCell;
import
org.apache.poi.hssf.usermodel.HSSFCellStyle;
import
org.apache.poi.hssf.usermodel.HSSFDataFormat;
import
org.apache.poi.hssf.usermodel.HSSFDateUtil;
import
org.apache.poi.hssf.usermodel.HSSFFont;
import
org.apache.poi.hssf.usermodel.HSSFRow;
import
org.apache.poi.hssf.usermodel.HSSFSheet;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook;
import
org.apache.poi.hssf.util.HSSFColor;
import
org.apache.poi.xssf.usermodel.XSSFCell;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle;
import
org.apache.poi.xssf.usermodel.XSSFFont;
import
org.apache.poi.xssf.usermodel.XSSFRow;
import
org.apache.poi.xssf.usermodel.XSSFSheet;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook;
public
class
CreatAndReadExcel
{
public
static
void
main(String[]
args)
throws
Exception
{
//讀取2003Excel檔案
String
path2003
=
System.getProperty("user.dir")
+
System.getProperty("file.separator")
+
"style_2003.xls";//
獲取專案檔案路徑+2003版檔名
System.out.println("路徑:"
+
path2003);
File
f2003
=
new
File(path2003);
try
{
readExcel(f2003);
}
catch
(IOException
e)
{
//
TODO Auto-generated catch block
e.printStackTrace();
}
//讀取2007Excel檔案
String
path2007
=
System.getProperty("user.dir")
+
System.getProperty("file.separator")
+
"style_2007.xlsx";//
獲取專案檔案路徑+2007版檔名
System.out.println("路徑:"
+
path2007);
File
f2007
=
new
File(path2007);
try
{
readExcel(f2007);
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
/**
* 建立2007版Excel檔案
*
* @throws FileNotFoundException
* @throws IOException
*/
private
static
void
creat2007Excel()
throws
FileNotFoundException,
IOException
{
//
HSSFWorkbook workBook = new HSSFWorkbook();// 建立 一個excel文件物件
XSSFWorkbook
workBook
=
new
XSSFWorkbook();
XSSFSheet
sheet
=
workBook.createSheet();//
建立一個工作薄物件
sheet.setColumnWidth(1,
10000);//
設定第二列的寬度為
XSSFRow
row
=
sheet.createRow(1);//
建立一個行物件
row.setHeightInPoints(23);//
設定行高23畫素
XSSFCellStyle
style
=
workBook.createCellStyle();//
建立樣式物件
//
設定字型
XSSFFont
font
=
workBook.createFont();//
建立字型物件
font.setFontHeightInPoints((short)
15);//
設定字型大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//
設定粗體
font.setFontName("黑體");//
設定為黑體字
style.setFont(font);//
將字型加入到樣式物件
//
設定對齊方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);//
水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//
垂直居中
//
設定邊框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);//
頂部邊框粗線
style.setTopBorderColor(HSSFColor.RED.index);//
設定為紅色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);//
底部邊框雙線
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);//
左邊邊框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);//
右邊邊框
//
格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy
h:mm"));
XSSFCell
cell
=
row.createCell(1);//
建立單元格
cell.setCellValue(new
Date());//
寫入當前日期
cell.setCellStyle(style);//
應用樣式物件
//
檔案輸出流
FileOutputStream
os
=
new
FileOutputStream("style_2007.xlsx");
workBook.write(os);//
將文件物件寫入檔案輸出流
os.close();//
關閉檔案輸出流
System.out.println("建立成功
office 2007 excel");
}
/**
* 建立2003版本的Excel檔案
*/
private
static
void
creat2003Excel()
throws
FileNotFoundException,
IOException
{
HSSFWorkbook
workBook
=
new
HSSFWorkbook();//
建立 一個excel文件物件
HSSFSheet
sheet
=
workBook.createSheet();//
建立一個工作薄物件
sheet.setColumnWidth(1,
10000);//
設定第二列的寬度為
HSSFRow
row
=
sheet.createRow(1);//
建立一個行物件
row.setHeightInPoints(23);//
設定行高23畫素
HSSFCellStyle
style
=
workBook.createCellStyle();//
建立樣式物件
//
設定字型
HSSFFont
font
=
workBook.createFont();//
建立字型物件
font.setFontHeightInPoints((short)
15);//
設定字型大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//
設定粗體
font.setFontName("黑體");//
設定為黑體字
style.setFont(font);//
將字型加入到樣式物件
//
設定對齊方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);//
水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//
垂直居中
//
設定邊框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);//
頂部邊框粗線
style.setTopBorderColor(HSSFColor.RED.index);//
設定為紅色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);//
底部邊框雙線
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);//
左邊邊框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);//
右邊邊框
//
格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy
h:mm"));
HSSFCell
cell
=
row.createCell(1);//
建立單元格
cell.setCellValue(new
Date());//
寫入當前日期
cell.setCellStyle(style);//
應用樣式物件
//
檔案輸出流
FileOutputStream
os
=
new
FileOutputStream("style_2003.xls");
workBook.write(os);//
將文件物件寫入檔案輸出流
os.close();//
關閉檔案輸出流
System.out.println("建立成功
office 2003 excel");
}
/**
* 對外提供讀取excel 的方法
*/
public
static
List<List<Object>>
readExcel(File
file)
throws
IOException
{
String
fileName
=
file.getName();
String
extension
=
fileName.lastIndexOf(".")
==
-1
?
""
:
fileName
.substring(fileName.lastIndexOf(".")
+
1);
if
("xls".equals(extension))
{
return
read2003Excel(file);
}
else
if
("xlsx".equals(extension))
{
return
read2007Excel(file);
}
else
{
throw
new
IOException("不支援的檔案型別");
}
}
/**
* 讀取 office 2003 excel
*
* @throws IOException
* @throws FileNotFoundException
*/
private
static
List<List<Object>>
read2003Excel(File
file)
throws
IOException
{
List<List<Object>>
list
=
new
LinkedList<List<Object>>();
HSSFWorkbook
hwb
=
new
HSSFWorkbook(new
FileInputStream(file));
HSSFSheet
sheet
=
hwb.getSheetAt(0);
Object
value
=
null;
HSSFRow
row
=
null;
HSSFCell
cell
=
null;
System.out.println("讀取office
2003 excel內容如下:");
for
(int
i
=
sheet.getFirstRowNum();
i
<=
sheet
.getPhysicalNumberOfRows();
i++)
{
row
=
sheet.getRow(i);
if
(row
==
null)
{
continue;
}
List<Object>
linked
=
new
LinkedList<Object>();
for
(int
j
=
row.getFirstCellNum();
j
<=
row.getLastCellNum();
j++)
{
cell
=
row.getCell(j);
if
(cell
==
null)
{
continue;
}
DecimalFormat
df
=
new
DecimalFormat("0");//
格式化 number String
//
字元
SimpleDateFormat
sdf
=
new
SimpleDateFormat(
"yyyy-MM-dd
HH:mm:ss");//
格式化日期字串
DecimalFormat
nf
=
new
DecimalFormat("0.00");//
格式化數字
switch
(cell.getCellType())
{
case
XSSFCell.CELL_TYPE_STRING:
//
System.out.println(i + "行" + j + " 列 is String type");
value
=
cell.getStringCellValue();
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_NUMERIC:
//
System.out.println(i + "行" + j
//
+ " 列 is Number type ; DateFormt:"
//
+ cell.getCellStyle().getDataFormatString());
if
("@".equals(cell.getCellStyle().getDataFormatString()))
{
value
=
df.format(cell.getNumericCellValue());
}
else
if
("General".equals(cell.getCellStyle()
.getDataFormatString()))
{
value
=
nf.format(cell.getNumericCellValue());
}
else
{
value
=
sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_BOOLEAN:
//
System.out.println(i + "行" + j + " 列 is Boolean type");
value
=
cell.getBooleanCellValue();
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_BLANK:
//
System.out.println(i + "行" + j + " 列 is Blank type");
value
=
"";
System.out.print(" "
+
value
+
" ");
break;
default:
//
System.out.println(i + "行" + j + " 列 is default type");
value
=
cell.toString();
System.out.print(" "
+
value
+
" ");
}
if
(value
==
null
||
"".equals(value))
{
continue;
}
linked.add(value);
}
System.out.println("");
list.add(linked);
}
return
list;
}
/**
* 讀取Office 2007 excel
*/
private
static
List<List<Object>>
read2007Excel(File
file)
throws
IOException
{
List<List<Object>>
list
=
new
LinkedList<List<Object>>();
//
String path = System.getProperty("user.dir") +
//
System.getProperty("file.separator")+"dd.xlsx";
//
System.out.println("路徑:"+path);
//
構造 XSSFWorkbook 物件,strPath 傳入檔案路徑
XSSFWorkbook
xwb
=
new
XSSFWorkbook(new
FileInputStream(file));
//
讀取第一章表格內容
XSSFSheet
sheet
=
xwb.getSheetAt(0);
Object
value
=
null;
XSSFRow
row
=
null;
XSSFCell
cell
=
null;
System.out.println("讀取office
2007 excel內容如下:");
for
(int
i
=
sheet.getFirstRowNum();
i
<=
sheet
.getPhysicalNumberOfRows();
i++)
{
row
=
sheet.getRow(i);
if
(row
==
null)
{
continue;
}
List<Object>
linked
=
new
LinkedList<Object>();
for
(int
j
=
row.getFirstCellNum();
j
<=
row.getLastCellNum();
j++)
{
cell
=
row.getCell(j);
if
(cell
==
null)
{
continue;
}
DecimalFormat
df
=
new
DecimalFormat("0");//
格式化 number String
//
字元
SimpleDateFormat
sdf
=
new
SimpleDateFormat(
"yyyy-MM-dd
HH:mm:ss");//
格式化日期字串
DecimalFormat
nf
=
new
DecimalFormat("0.00");//
格式化數字
switch
(cell.getCellType())
{
case
XSSFCell.CELL_TYPE_STRING:
//
System.out.println(i + "行" + j + " 列 is String type");
value
=
cell.getStringCellValue();
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_NUMERIC:
//
System.out.println(i + "行" + j
//
+ " 列 is Number type ; DateFormt:"
//
+ cell.getCellStyle().getDataFormatString());
if
("@".equals(cell.getCellStyle().getDataFormatString()))
{
value
=
df.format(cell.getNumericCellValue());
}
else
if
("General".equals(cell.getCellStyle()
.getDataFormatString()))
{
value
=
nf.format(cell.getNumericCellValue());
}
else
{
value
=
sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_BOOLEAN:
//
System.out.println(i + "行" + j + " 列 is Boolean type");
value
=
cell.getBooleanCellValue();
System.out.print(" "
+
value
+
" ");
break;
case
XSSFCell.CELL_TYPE_BLANK:
//
System.out.println(i + "行" + j + " 列 is Blank type");
value
=
"";
//
System.out.println(value);
break;
default:
//
System.out.println(i + "行" + j + " 列 is default type");
value
=
cell.toString();
System.out.print(" "
+
value
+
" ");
}
if
(value
==
null
||
"".equals(value))
{
continue;
}
linked.add(value);
}
System.out.println("");
list.add(linked);
}
return
list;
}
}
|
相關文章
- apache---poi讀取和建立excel檔案ApacheExcel
- Apache POI 建立 ExcelApacheExcel
- Apache POI 操作ExcelApacheExcel
- POI 分批讀取Excel資料Excel
- Ace引擎和Jet引擎讀取Excel (Excel 2007 & 2003)Excel
- POI 使用SAX讀取大資料Excel大資料Excel
- Apache POI處理Excel文件ApacheExcel
- Java架構-Apache POI ExcelJava架構ApacheExcel
- JavaPoi建立與讀取ExcelJavaExcel
- 使用Java通過POI讀取EXCEL中的資料JavaExcel
- 使用 Apache Jakarta POI 從多個資料庫建立一個 Excel 報表Apache資料庫Excel
- POI讀取公式的值公式
- 解析xlsx檔案---Java讀取Excel2007JavaExcel
- java poi讀取Excel資料 插入到SQL SERVER資料庫中JavaExcelSQLServer資料庫
- Excel 2003命令在Excel 2007裡面地位置Excel
- Laravel讀取ExcelLaravelExcel
- POI 匯出ExcelExcel
- POI 操作Excel 整理Excel
- excel檔案匯入(支援2003、2007格式)Excel
- Apache POI使用詳解Apache
- excel 資料讀取Excel
- poi解析Excel內容Excel
- java使用poi生成excelJavaExcel
- POI生成EXCEL檔案Excel
- poi的excel匯出Excel
- 不升級 POI 版本,如何生成符合新版標準的Excel 2007檔案Excel
- office 互動庫 Apache POIApache
- Python讀取Excel表格PythonExcel
- PHPExcel讀取excel資料PHPExcel
- vb.net 讀取ExcelExcel
- NPOI讀取Excel官方demoExcel
- C#讀取Excel文件C#Excel
- WinForm讀取Excel檔案ORMExcel
- 前端讀取excel檔案前端Excel
- Java操作Excel:POI和EasyExcelJavaExcel
- java poi 匯出excel加密JavaExcel加密
- 讀取和儲存Excel表Excel
- python對Excel的讀取PythonExcel