java将数据生成csv文件
生活随笔
收集整理的這篇文章主要介紹了
java将数据生成csv文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1,httpRequest接口觸發進程[或者可以換成其他方式觸發]
/*** 出入庫生成CSV文件
* @param req
* @param params
* @return
*/
@RequestMapping(value = "explanCsvFileToOrder")
ResponseMessage explanCsvFileToOrder(HttpServletRequest req, @RequestParam Map<String, String> params) {
TtxSession sess = getSession(req, params.customer)
ResponseMessage rsp
rsp = validate(sess, params)
if (!rsp.hasError()) {
rsp = excfSvc.explanCsvToShipAndRece(sess,params.warehouseCode)
}
return rsp
}
/**
* scheduler_SHIPANDRECE
* @param sess
* @param warehouseCode
* @return
*/
ResponseMessage explanCsvToShipAndRece(TtxSession sess, String warehouseCode) {
ResponseMessage rsp = ResponseMessageFactory.success(sess, null)
try {
//讀取全局大文檔,找到數據執行的SQL
List invSQLS = template(sess).queryForList("select textValue from large_text where warehouseCode='*' and type='CSV_FILE_SQL' and code='CSV_SHIPANDRECE'")
if (!invSQLS) {
return ResponseMessageFactory.error(sess, "未查詢到單據條件SQL")
}
//找到存儲路徑
List filePath = template(sess).queryForList("select value from config_value where warehouseCode=? and identifier='CSVFILEPATH'", warehouseCode)
// String path = "c:/export/"
if (!filePath) {
return ResponseMessageFactory.error(sess, "未查詢到存儲路徑")
}
//定義文件存儲路徑
String path = filePath[0]["value"].toString()
//定義命名格式
String fileName = "OrderData-" + LocalDateTime.now().format(dtf)
String invSql = invSQLS[0]["textValue"].toString()
//查詢出來數據
List locInv = template(sess).queryForList(invSql)
List<Object> exportData = new ArrayList<Object>()
//給csv文件添加標題
exportData.add("DHLWarehouseNo")
exportData.add("StorageNo")
exportData.add("RelatedOrderNo")
exportData.add("ActualWarehouseTime")
exportData.add("SpareColumn1")
exportData.add("SpareColumn2")
exportData.add("LoadNo")
exportData.add("InventoriesAmount")
exportData.add("MaterialExpiryDate")
exportData.add("Department")
exportData.add("MaterialState")
List<List<Object>> datalist = new ArrayList<List<Object>>()
List<Object> data
//循環添加數據主體
locInv?.each {
data = new ArrayList<Object>()
data.add(it.CODE)
data.add(it.WarehouseNo)
data.add(it.deliveryNo)
data.add(it.lastUpdated)
data.add(it.SpareColumn1)
data.add(null)
data.add(it.skuCode)
data.add(it.quantity)
data.add(it.materialExpiryDate)
data.add(it.department)
data.add(it.inventorySts)
datalist.add(data)
}
//創建文件
File file = this.createCSVFile(exportData, datalist, path, fileName)
String fileName2 = file.getName()
System.out.println("文件名稱:" + fileName2)
} catch (Throwable t) {
ExceptionManager.logException(sess, t)
return ResponseMessageFactory.error(sess, WmsMessages.MSG_GNRL_0000)
}
return rsp
}
/**
* 生成CSV文件的主體方法
* @param head
* @param dataList
* @param outPutPath
* @param filename
* @return
*/
public static File createCSVFile(List<Object> head, List<List<Object>> dataList, String outPutPath, String filename) {
File csvFile = null
BufferedWriter csvWtriter = null
try {
csvFile = new File(outPutPath + File.separator + filename + ".csv")
File parent = csvFile.getParentFile()
if (parent != null && !parent.exists()) {
parent.mkdirs()
}
csvFile.createNewFile()
// GB2312使正確讀取分隔符","
csvWtriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
csvFile), "GB2312"), 1024)
// 寫入文件頭部
writeRow(head, csvWtriter)
// 寫入文件內容
for (List<Object> row : dataList) {
writeRow(row, csvWtriter)
}
csvWtriter.flush()
} catch (Exception e) {
e.printStackTrace()
} finally {
try {
csvWtriter.close()
} catch (IOException e) {
e.printStackTrace()
}
}
return csvFile
} private static void writeRow(List<Object> row, BufferedWriter csvWriter) throws IOException {
// 寫入文件頭部
for (Object data : row) {
StringBuffer sb = new StringBuffer()
String rowStr = sb.append("\"").append(data).append("\",").toString()
csvWriter.write(rowStr)
}
csvWriter.newLine()
}
轉載于:https://www.cnblogs.com/joker331/p/10437190.html
總結
以上是生活随笔為你收集整理的java将数据生成csv文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定义列表的特点html,HTML的列表表
- 下一篇: 大数据技术原理与应用(课后作业)