在Java中讀寫Excel文件
Jakarta的POI項目提供了一組操縱Windows文檔的Java API,如下幾個類提供了操作Excel文件的方便的途徑:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,分別代表了Excel電子表格中的Book、Sheet、行和單元格。
你可以在下面地址下載到最新的POI工具包:
http://jakarta.apache.org/poi/index.html
下面的代碼創建一個Excel文件test.xls,並在第一行的第一格中寫入一條消息:
import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;
// code run against the jakarta-poi-1.5.0-FINAL-20020506.jar.
public class PoiTest {
static public void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:/test.xls");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
wb.setSheetName(0, "first sheet");
HSSFRow row = s.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("Hello! This message is generated from POI.");
wb.write(fos);
fos.close();
}
}
讀取Excel文件時,首先生存一個POIFSFileSystem對象,由POIFSFileSystem對象構造一個HSSFWorkbook,該HSSFWorkbook對象就代表了Excel文檔。下面代碼讀取上面生成的Excel文件寫入的消息字串:
POIFSFileSystem fs = null;
HSSFWorkbook wb = null;
try {
fs = new POIFSFileSystem(new FileInputStream("d:/test.xls"));
wb = new HSSFWorkbook(fs);
} catch (IOException e) {
e.printStackTrace();
}
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short) 0);
String msg = cell.getStringCellValue();
另外一個例子:
import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateCells
{
public static void 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();
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.