使用Java在保存到数据库时更改excel数据的日期格式
我编写了代码,将用户数据保存在excel文件中,保存到MySQL数据库中。在我运行它的过程中,除了日期错误之外,一切都正常。在excel文件中,日期格式为dd.MM.yyyy,而MySQL中的日期格式为yyyy-MM-dd。在将日期格式保存到数据库中时,我应该在代码中如何转换日期格式 以下是代码:使用Java在保存到数据库时更改excel数据的日期格式,java,mysql,excel,date,Java,Mysql,Excel,Date,我编写了代码,将用户数据保存在excel文件中,保存到MySQL数据库中。在我运行它的过程中,除了日期错误之外,一切都正常。在excel文件中,日期格式为dd.MM.yyyy,而MySQL中的日期格式为yyyy-MM-dd。在将日期格式保存到数据库中时,我应该在代码中如何转换日期格式 以下是代码: import java.io.FileInputStream; import java.sql.*; import java.util.ArrayList; import java.util.Iter
import java.io.FileInputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelToDb {
public static void main( String [] args ) {
String fileName="testing.xlsx";
Vector dataHolder=read(fileName);
saveToDatabase(dataHolder);
}
public static Vector read(String fileName) {
Vector cellVectorHolder = new Vector();
try{
FileInputStream myInput = new FileInputStream(fileName);
//POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
XSSFWorkbook myWorkBook = new XSSFWorkbook(myInput);
XSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext()){
XSSFRow myRow = (XSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
//Vector cellStoreVector=new Vector();
List list = new ArrayList();
while(cellIter.hasNext()){
XSSFCell myCell = (XSSFCell) cellIter.next();
list.add(myCell);
}
cellVectorHolder.addElement(list);
}
}catch (Exception e){e.printStackTrace(); }
return cellVectorHolder;
}
private static void saveToDatabase(Vector dataHolder) {
String activityId="";
String activityName="";
String activityAllocation="";
String activityDate="";
String activityPersonInCharge="";
System.out.println(dataHolder);
for(Iterator iterator = dataHolder.iterator();iterator.hasNext();) {
List list = (List) iterator.next();
activityId= list.get(0).toString();
activityName= list.get(5).toString();
activityAllocation= list.get(8).toString();
activityDate= list.get(10).toString();
activityPersonInCharge= list.get(11).toString();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/TEST", "root", "password");
System.out.println("connection made...");
PreparedStatement stmt=con.prepareStatement("INSERT INTO TEST_DEMO(ACT_ID,ACT_NAME,ACT_ALLOCATION,ACT_DATE,ACT_PERSON_ON_CHARGE) VALUES(?,?,?,?,?)");
stmt.setString(1, activityId);
stmt.setString(2, activityName);
stmt.setString(3, activityAllocation);
stmt.setString(4, activityDate);
stmt.setString(5, activityPersonInCharge);
stmt.executeUpdate();
System.out.println("Data is inserted");
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
请为日期格式化程序部分提供一些线索
提前谢谢。不要开枪打死信使。:-)
You just try this:
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date dt = sdf.parse("your date field");
sdf.applyPattern("yyyy-MM-dd");
res = sdf.format(dt);
据我记忆所及,日期在MS Excel中可以是不同的格式,您无法通过Apache POI确定使用了哪种格式。如果有人能告诉我我错了,我会很高兴的
要在MySQL中存储日期,您需要将其存储在数据类型为
date
的列中。这样的列没有格式。只有当您将列的日期呈现给用户时(或将其序列化为JSON或出于某些其他原因需要字符串表示),您才需要格式化该列的日期。日期的字符串在哪里?把它们作为日期扫描我有一个例子吗?可以如果我从字符串改为日期,等号(=)后面应该是什么?抱歉,还是新手。只有代码的答案质量不高。请编辑您的答案以解释您的代码,说明其解决问题的原因和方式,并链接到任何相关文档。@Manchikanti,不工作,它在线程“main”java.text.ParseException中给了我异常:不可解析日期:“dd.MM.yyyy”