有什么軟件可以隨意提取Excel表格中的數據?
建議您使用Java開發,通過ApachePOI開源項目讀取Exc:。
并將jar包導入到項目工程中。
實施代碼:
公共類卓越運營{
公共靜態voidmain(String[]args)引發異常{
文件文件新文件(ExcelDemo.xls)
String[][]結果getData(file,1)
introwLength結果.Length
for(intioiltrowlengthi){
for(intj0jltresult[i])。lengthj){
(結果[i][j]tt)
}
()
}
}
公共靜態字符串[][]getData(Filefile,intignoreRows)
引發FileNotFoundException,IOException{
ListltString[]gtresultnewArrayListltString[]gt()
整數行大小0
BufferedInputStreaminnewBufferedInputStream(newfileinputstream(
文件))
//打開HSSFWorkbook
POIFSFileSystemfs新POIFSFileSystem(入)
hssf工作簿wb新hssf工作簿(fs)
HSSFCell單元格為空
for(intsheetindex0sheetindexlt()sheetindex){
HSSFSheetst(工作表索引)
//第一個行為的標題不取。
for(introwIndexignorerowsrowIndexlt()rowIndex){
HSSFRow行(rowIndex)
if(行空){
繼續
}
int臨時行大小()1
if(tempRowSizegtrowSize){
rowSize
}
String[]值新字符串[rowSize]
(值,)
布爾散列值為假
for(shortcolumnindex0columnindexlt()columnindex){
字符串值
單元格(列索引)
如果(細胞!null){
//注意:這個必須設置,否則可能會出現。
(HSSFCell。編碼_UTF_16)
開關((){
案例HSSFCell。C:
值()
破裂
案例HSSFCell。CELL_TYPE_NUMERIC:
如果((單元格)){
日期日期()
如果(日期!null){
新的簡單日期格式值(yyyy-MM-dd)
。格式(日期)
}否則{
價值
}
}否則{
值新的DecimalFormat(0)。格式(單元格
。getNumericCellValue())
}
破裂
案例HSSFCell。C:
//如果為公式生成的數據是導入的,則沒有值。
如果(!().等于()){
值()
}否則{
值()
}
破裂
案例HSSFCell。C:
破裂
案例HSSFCell。C:
價值
破裂
凱斯·HSSF細胞。C:
值(()真?Y
:)
破裂
d:
價值
}
}
if(columnIndex0ampamp()。等于()){
破裂
}
values[columnInd
外碼和內碼是什么?
內碼是計算機中存儲、處理和傳輸漢字的信息代碼。必須兼容ASCII碼,但不能。
因此,國標代碼#391#39的兩個字節的最高位置與西文是有區別的,西文是內碼。漢字的輸入碼稱為#34外碼#34。輸入碼是指我們在輸入漢字時使用的代碼。常見的外碼分為數字碼(如位置碼)、拼音碼和字形碼(如五筆)。
34#34的位置碼除了位置碼,還有1601,十六進制是0x10和0x01。這與計算機中廣泛使用的ASCII編碼相。為了兼容00-7fASCII編碼,我們在區號的高低字節分別加了一個0。這樣,#34的代碼就變成了B0A1。我們再加兩個A0碼,也叫GB2312碼,雖然GB2312的原文根本沒有提到這個。
內碼是指操作系統內部的字符編碼。早期操作系統的內部代碼是語言相關的。是的。現在Windows內部用Unicode,然后用代碼頁來適應各種語言,所以#34內碼#34的概念比較模糊。我們通常將默認代碼頁中指定的代碼稱為內部代碼。內碼這個詞沒有官方定義。代碼頁只是微軟的一個習慣。作為程序員,只要知道它們是什么,就沒有必要過多考證這些名詞。
所謂碼頁,就是對一種語言的字符編碼。例如,GBK的代碼頁是CP936,BIG5的代碼頁是CP950,GB2312的代碼頁是CP20936。
Windows中有一個默認代碼頁的概念,就是默認用什么編碼來解釋字符。例如,Windows記事本打開一個文本文件,其中包含字節流:BA、BA、D7、D6。Windows應該如何解釋?它是根據Unicode編碼、GBK、BIG5還是ISO8859-1來解釋的?如果你按GBK解釋,你會得到34個漢字。根據其他編碼解釋,可能找不到對應的字符,或者找到錯誤的字符。所謂#34錯誤#34是指與文字作者的本意不符,進而產生。
答案是Windows根據當前默認的代碼頁解釋文本文件中的字節流。默認代碼頁可以通過控制面板中的區域選項來設置。記事本的另存為里有一個ANSI,實際上是按照默認代碼頁的編碼保存的。
Windows的內部代碼是Unicode,技術上可以同時支持多個代碼頁。只要文件能說明你用的是什么編碼,用戶安裝了相應的代碼頁,Windows就能正確顯示。例如,可以在HTML文件中指定charset。
HTML文檔的一些作者,尤其是英文作者,認為世界上所有的人都使用英文,不在文檔中指定charset。如果他使用0x80到0xff之間的字符,而中文Windows按照默認的GBK來解釋,就會出現。