1. 程式人生 > >【程式碼】Excel匯入到資料庫

【程式碼】Excel匯入到資料庫

前言

        最近專案中需要將Excel中資料匯入到資料庫中,完成後,做一個程式碼總結。

程式碼

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class InsertExcel {
    /**
     * 解析方法
     * 
     * @param file
     * @return
     * @throws Exception
     */
    public List<String[]> getExcel(String filePath) throws Exception {
        // 建立對Excel工作簿檔案的引用
        boolean isExcel2003 = filePath.toLowerCase().endsWith("xls") ? true : false;
        Workbook workbook = null;
        if (isExcel2003) {
            workbook = new HSSFWorkbook(new FileInputStream(new File(filePath)));
        } else {
            workbook = new XSSFWorkbook(new FileInputStream(new File(filePath)));
        }
        // 在Excel文件中,第一張工作表的預設索引是0
        // 其語句為:
        // HSSFSheet sheet = wookbook.getSheetAt(0);
        Sheet sheet = workbook.getSheet("T_POFO_ASSET");
        // 獲取到Excel檔案中的所有行數
        int rows = sheet.getPhysicalNumberOfRows();
        // 遍歷行
        List<String[]> list_excel = new ArrayList<String[]>();
        for (int i = 1; i <= rows; i++) {
            // 讀取左上端單元格
            Row row = sheet.getRow(i);
            // 行不為空
            if (row != null) {
                // 獲取到Excel檔案中的所有的列
                int cells = row.getPhysicalNumberOfCells();
                String value = "";
                // 遍歷列
                for (int j = 0; j <= cells; j++) {
                    // 獲取到列的值
                    Cell cell = row.getCell(j);
                    if (cell != null) {
                        switch (cell.getCellType()) {
                        case Cell.CELL_TYPE_FORMULA:
                            break;
                        case Cell.CELL_TYPE_NUMERIC:
                            value += cell.getNumericCellValue() + ",";
                            break;
                        case Cell.CELL_TYPE_STRING:
                            value += cell.getStringCellValue() + ",";
                            break;
                        default:
                            value += "0";
                            break;
                        }
                    }
                }
                String[] val = value.split(",");
                list_excel.add(val);
            }
        }
        workbook.close();
        return list_excel;
    }
}
入參:Excel檔案完整路徑。

出參:list<String[]>,每一行為一list,list中欄位在字串陣列中。可根據具體的需要插入到list<實體>中。

總結

        輸出引數後,之前還寫過一篇部落格,mybatis批量插入資料,入參為list,可以將此功能完成,在此不多敘述。

相關推薦

程式碼Excel匯入資料庫

前言         最近專案中需要將Excel中資料匯入到資料庫中,完成後,做一個程式碼總結。 程式碼 import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; imp

PHP全自動安裝資料庫,不需要手動匯入

author:咔咔 wechat:fangkangfk   用了很多的自動安裝資料庫的專案了,今天也來寫一個,只是一個簡單版本,可以按照這個思路來建立適合自己專案的安裝資料庫 原始碼地址問價: https://download.csdn.net/download/f

C#Excel動態匯入多張表

前言     昨天去一家公司面試,專案經理提了一個專案很緊的專案需求,Excel動態匯入多張表,同時根據給出公式做表內及表間的資料校驗,晚上回來之後一直到今天下午就一直再搗鼓著,不過遺憾的是沒能完美實現上述功能。不過卻實現了簡單實現了Excel的多表匯入。下面是我的程式碼思

Excel匯入資料庫程式碼實現。

Excel匯入的基本實現:  1.先把Excel匯入DataSet裡 2.再把其中的值區出來,利用sql語句插入到資料庫裡。  /// <summary>     /// 實現SQL語句的構造!     /// </summary>     ///

PythonExcel-3

中文名字 names IT 指定位置 xlsx clas arch 公式 bar 1 1、 導入Excel模塊:from openpyxl import Workbook 2 3 2、 創建Excel對象:wb=Workbook() 4

postgresql 檢視資料庫叢集建立時間

原文連結:https://blog.csdn.net/ctypyb2002/article/details/80930809 使用 pg_controldata 檢視 Database system identifier $ /usr/pgsql-10/bin/pg_controldata

mysqlmysql建立資料庫,基字符集 和 資料庫排序規則 的對比選擇

1.一般選擇utf8.下面介紹一下utf8與utfmb4的區別。 utf8mb4相容utf8,且比utf8能表示更多的字元。至於什麼時候用,看你的做什麼專案了,到https://www.cnblogs.com/sxdcgaq8080/p/9932786.html看unicode編碼區從1 ~ 126就屬於傳

原創EXCEL公式經驗(7)---EXCLE一般都是返回單個值得,如何寫公式返回多個匹配值?

  (1)一般excel都只能在一個單元格,且是輸入公式的這個單元格,返回一個值 (2)少數情況,可以在這個一單元格返回多個值 (3)現在考慮的是,輸入公式後,可以返回多個值    看起來公式還是遵循了(1)原則   INDEX($A:$A

oracledual在資料庫不同啟動狀態其欄位數

dual在資料庫不同啟動狀態其欄位數 不經意間在《oracle DBA工作日記》看到dual這個系統表在資料庫nomount、mount、open狀態其欄位不一樣,驗證後記錄如下: --關閉資料庫   SQL> shutdown immediate Database cl

程式碼第12章 pyspider框架的使用

關於 pyspider Web預覽介面太小的解決方法 修改C:\Program Files\python3.6.5\Lib\site-packages\pyspider\webui\static\debug.min.css的第一行 清理chrome快取,頁面大小終於正常了。。。。 CSS

程式碼用Python玩轉微信,echarts餅圖,WordCloud雲圖,自動回覆訊息,好友地區熱圖

參考用Python玩轉微信(一),做了一些修改 import re import os import time import itchat from echarts import Echart, Legend, Pie import wordcloud from wordcloud im

程式碼微信訂閱號

參考使用python一步一步搭建微信公眾平臺(一)嘗試搭建微信訂閱號,採用較舊的方法: 申請訂閱號,新增新浪各個節點到ip白名單 新浪雲sae應用,將程式碼git到新浪雲sae應用 配置伺服器發現Token驗證失敗。。。。。 檢視sae日誌中心: 1.ea

程式碼第11章 APP的爬取

11.1 Charles的使用 電腦win10安裝Charles,安裝受信任的證書; 替換安裝目錄的charles.jar,得到破解版; 為解決亂碼問題,網上一些做法: 將SSL代理設定裡add,Host填 * ,port填443; Charles.ini加上UTF-8; Tools裡R

程式碼Fluent Python

14.1 Sentence類第1版:單詞序列 從 Python 3.4 開始,檢查物件 x 能否迭代,最準確的方法是:呼叫 iter(x) 函式,如果不可迭代,再處理 TypeError 異常。這比使用 isinstance(x, abc.Iterable) 更準確,因為 iter(x) 函

程式碼第9章 代理的使用

9.1 代理的設定 # urllib設定 HTTP 代理 """ from urllib.error import URLError from urllib.request import ProxyHandler, build_opener # IP/PORT: http://www.

PythonExcel操作

目錄 xlrd、xlwt模組 xlrd讀操作 xlwt寫操作 xluntils模組 pyExcelerator模組 讀操作 寫操作 參考 用python來自動生成excel資料檔案。python處理excel檔案主要是第三方模組庫xlrd、xlwt、xlunt

程式碼Python刷題

之前用C刷LeetCode,也就刷了60道吧,結果後來也不刷了。。。 現在主要用Python,刷一些題目熟悉語法,當然還有資料結構和演算法。 給定一個數組 strs,其中的資料都是字串,給定兩個字串 str1,str2。如果這兩個字串都在 strs陣列中,就返回它們之間的最小距離;如果其

程式碼小技巧,動態更新中。。。。

若要在迴圈內部修改正在遍歷的序列(例如複製某些元素),建議您首先製作副本。在序列上迴圈不會隱式地建立副本。切片表示法使這尤其方便: >>> words = ['cat', 'window', 'defenestrate'] >>> for w in w

101Android GreenDao資料庫講解

GreenDao資料庫講解 在Android開發過程中,資料的快取的開發可能會使用SQLite。然而在使用它時,我們往往需要做許多額外的工作,編寫Native SQL(原生的)語句與解析查詢結果等。所

利用excel匯入資料庫檔案

1首先了解自己要匯入的Excel的列以及其型別。 2首先建立一個空表,列與要匯入的excel的列名稱相同。同時定義資料的型別。也可以在在【ODBC匯入器】窗體中單擊 【建立表】,如下圖所示,設定表的屬性,在【列】面板下,將根據Excel的列構建列,單擊【應用】,該表