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