問題是因爲excel數據沒有保存。我也在處理同樣的問題,並採用了適合我的另一種解決方案。我只是在excel中創建了一個宏來保存excel工作簿,只要它的單元格值發生了變化。現在我得到了帶有最新保存數據的excel文件,這些數據可以通過java代碼讀取,並可用於其他目的。
我會後我的宏代碼和Java代碼,我用來檢索從Excel中的數據,
宏代碼
Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A6:A12,B6:B12,L6:L12,O6:O12,P6:P12,Y6:Y12")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Do Until Not IsFileLocked(ThisWorkbook.Name)
If IsFileLocked(ThisWorkbook.Name) Then
Application.Wait Now + TimeSerial(0, 0, 0.5)
End If
Loop
ActiveWorkbook.Save
End If
Set KeyCells = Nothing
End Sub
Function IsFileLocked(filePath As String) As Boolean
On Error Resume Next
Open filePath For Binary Access Read Write Lock Read Write As #1
Close #1
If Err.Number <> 0 Then
IsFileLocked = True
' Application.StatusBar = "Waiting for file to close"
Err.Clear
Else
IsFileLocked = False
' Application.StatusBar = ""
End If
End Function
Java代碼的
fileName="C:\\ODIN\\Diet\\Arbitrage.xls";
public boolean readExcel(String fileName)
{
ArrayList newList=null;
FileInputStream fis=null;
POIFSFileSystem poifs=null;
HSSFWorkbook hssfwb=null;
HSSFSheet hssfs=null;
Iterator rowIterate=null;
try
{
newList=new ArrayList();
fis=new FileInputStream(fileName);
poifs=new POIFSFileSystem(fis);
hssfwb=new HSSFWorkbook(poifs);
hssfs=hssfwb.getSheetAt(0);
rowIterate=hssfs.rowIterator();
while(rowIterate.hasNext())
{
HSSFRow row=(HSSFRow) rowIterate.next();
Iterator cellIterate=row.cellIterator();
ArrayList<HSSFCell> cellList=new ArrayList<>();
while(cellIterate.hasNext())
{
HSSFCell cell=(HSSFCell) cellIterate.next();
cellList.add(cell);
}
newList.add(cellList);
}
for(int i=0;i<newList.size();i++)
{
ArrayList<HSSFCell> cellList=(ArrayList<HSSFCell>) newList.get(i);
for(int j=0;j<cellList.size();j++)
{
HSSFCell cell=cellList.get(j);
System.out.println("Cell Values: "+cell);
}
System.out.println("----------------------");
}
}
catch(Exception e)
{
log.error(e.getMessage());
}
return true;
}
下一步你需要知道的是如何創建一個宏並保存它,以便在下一次重新啓動時el應用程序您的宏將無需任何用戶干預即可正常工作。
您的excel文件已經存在於上述位置。現在,我將解釋每一個步驟,以在MS Excel中繼續進行2007年
- 打開excel表
- 轉到辦公室按鈕 - > Excel的選項 - >勾選「顯示開發者選項卡」選項
- 開放開發選項卡並單擊Visual Basic圖標。
- 您的代碼窗口現在將打開,從項目瀏覽器中創建一個新的模塊。
- 將上面的代碼粘貼到所有表單中。
- 現在您必須將宏安全設置更改爲低。
- Goto Developer選項卡並單擊宏安全性。
- 選擇「啓用所有宏」單選按鈕並選中「信任訪問VBA項目對象模型」選項。
- 現在保存並關閉excel,就是這樣。
但是這會導致性能問題,因爲保存過程將在每個單元更改時執行。
excel文件中的數據是連續變化的股票市場 – Prashant
您的問題是什麼?你的代碼與你的評論矛盾:該文件不是來自谷歌,而是來自c:/ ODING/...)。 –