ajaxでエクセルをアップロードする
htmlを使用します。
<li>
<span>on pass:</span>
<span class="input">
<input type="file" id="upfile" name="upfile" placeholder=""/>
</span>
<button onclick="importExp();">import</button>
<span> format: .xls</span>
</li>
jsです。
//import file
function importExp() {
var formData = new FormData();
var name = $("#upfile").val();
formData.append("file",$("#upfile")[0].files[0]);
formData.append("name",name);
$.ajax({
url : '#springUrl('')/summary/importExp',
type : 'POST',
async : false,
data : formData,
// Tell jQuery not to process the sent data
processData : false,
// Tell jQuery not to set the Content-Type request header
contentType : false,
beforeSend:function(){
console.log("In progress, please wait");
},
success : function(responseStr) {
if(responseStr=="01"){
alert("Imported successfully");
}else{
alert("Import failed");
}
}
});
}
コントローラを使用します。
@RequestMapping("/importExp")
レスポンスボディ
public String importExp(@RequestParam("file") MultipartFile file, HttpServletRequest request){...
<未定義
// ファイルが空かどうか判断する
String flag = "02";// アップロードフラグ
if (!file.isEmpty()) {
<未定義
トライ {
<未定義
String originalFilename = file.getOriginalFilename();//元のファイル名
InputStream is = file.getInputStream();//入力ストリームの取得
flag = summaryExpServiceImpl.writeExelData(is);//summaryExpServiceImpl これはサービスです、springを使ってこのようなサービスに注入してください。
// ファイルをダンプする
// file.transferTo(new File(filePath))を実行します。
} catch (Exception e) {
<未定義
flag="03";//アップロードエラー
e.printStackTrace()を実行します。
}
}
フラグを返します。
}
サービスを提供します。
/**
* Write to
* @param is
*/
public String writeExelData(InputStream is){
List<List<String>> list = readExcelContent(is);
for (int i=0,j=list.size();i<j;i++){
List<String> row = list.get(i);
ExpInfoSummary expInfoSummary = new ExpInfoSummary();
expInfoSummary.setOrgName(row.get(0));
expInfoSummary.setSiteName(row.get(1));
expInfoSummary.setProductCode(row.get(2));
expInfoSummary.setProductName(row.get(3));
expInfoSummary.setProductNum(row.get(4));
expInfoSummary.setProductPrice(Double.valueOf(row.get(5)));
expInfoSummary.setProductState(row.get(6));
pool.getSqlSession("psEpfSqlSession").selectList("com.test.ps.data.epf.mapper.expInfoSummary.insertExp", expInfoSummary);
}
return "01";
}
/**
* Read the contents of Excel data
* @param is
* @return Map Map object containing the contents of the cell data
*/
public List<List<String>> readExcelContent(InputStream is) {
List<List<String>> content = new ArrayList<List<String>>();
POIFSFileSystem fs;
HSSFWorkbook wb;
HSSFSheet sheet;
HSSFRow row;
String str = "";
try {
fs = new POIFSFileSystem(is);
wb = new HSSFWorkbook(fs);
sheet = wb.getSheetAt(0);
// Get the total number of rows
int rowNum = sheet.getLastRowNum();
row = sheet.getRow(0);
int colNum = row.getPhysicalNumberOfCells();
// The text should start from the second row, the first row is the title of the table header
for (int i = 1; i <= rowNum; i++) {
row = sheet.getRow(i);
int j = 0;
List<String> list = new ArrayList<String>();
while (j < colNum) {
// The data content of each cell is split with "-", later when needed, use the String class's replace() method to restore the data
// You can also set the data of each cell to a javabean property, which requires a new javabean
// str += getStringCellValue(row.getCell((short) j)).trim() +
// "-";
str = getCellFormatValue(row.getCell((short) j)).trim();
list.add(str);
j++;
}
content.add(list);
str = "";
}
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
/**
* Set the data according to the HSSFCell type
* @param cell
* @return
*/
private String getCellFormatValue(HSSFCell cell) {
String cellvalue = "";
if (cell ! = null) {
// Determine the type of the current Cell
switch (cell.getCellType()) {
// If the Type of the current Cell is NUMERIC
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA: {
// Determine if the current cell is a Date
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// If it's a Date, convert it to Data format
// Method 1: The data format is with hours, minutes and seconds: 2011-10-12 0:00:00
// cellvalue = cell.getDateCellValue().toLocaleString();
// method 2: this way the data format is not with the hour, minute and second: 2011-10-12
Date date = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellvalue = sdf.format(date);
}
// If it is a pure number
else {
// get the value of the current Cell
cellvalue = String.valueOf(cell.getNumericCellValue());
}
break;
}
// If the type of the current Cell is STRIN
case HSSFCell.CELL_TYPE_STRING:
// Get the current Cell string
関連
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
Spring Boot による HTTPS アクセスの設定
-
SpringBootApplication を型解決できない。
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
org.glassfish.jersey.servlet.ServletContainer
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
Spring MVC アノテーションエラーです。引数型[java.lang.String]の名前が利用できません。
-
スレッド "main "での例外 java.lang.NullPointerException どのようにそれを解決するには?
-
javaException: 比較メソッドが一般契約に違反しています!
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
Java(1)仕上げの基本概念+eclipseのインストール構成
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決