Heim >Java >javaLernprogramm >So implementieren Sie eine Excel-Import- und Exportdatenbank in Java

So implementieren Sie eine Excel-Import- und Exportdatenbank in Java

黄舟
黄舟Original
2017-08-20 09:41:171954Durchsuche

In diesem Artikel wird hauptsächlich die Methode von Java zum Implementieren von Excel-Import- und Exportdatenbanken vorgestellt und die Implementierungsfähigkeiten von Java in Bezug auf Lese-, Schreib- und Datenbankoperationen für Excel anhand von Beispielen analysiert Artikel

Beschreibt, wie Java Excel-Import- und Exportdatenbanken implementiert. Teilen Sie es als Referenz mit allen:

Aufgrund der Anforderungen des Unternehmens möchte ich Daten über Excel importieren und zur Datenbank hinzufügen. Die Felder des importierten Excel sind jedoch nicht verfügbar behoben. Sie müssen jedes Mal eine Datentabelle dynamisch erstellen. Informationen zum dynamischen Erstellen einer Datentabelle finden Sie im vorherigen Artikel „Java verwendet JDBC zum dynamischen Erstellen von Datentabellen und SQL-Vorverarbeitungsmethoden“. "

Im Folgenden geht es hauptsächlich darum, wie man Excel in die Datenbank importiert und den Code direkt eingibt: Erste Schritte~~

ExcellToObjectUtil-Klasse

Das Wichtigste Funktionen sind Beim Importieren von Daten aus Excel in eine Datenbank sind einige Punkte zu beachten:

1. Im Allgemeinen ist die erste Zeile in Excel der Feldname und muss daher nicht importiert werden Die Berechnung beginnt in der zweiten Zeile

2. Die Übereinstimmung jeder Spalte muss mit den Attributen des Objekts übereinstimmen


import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import com.forenms.exam.domain.ExamInfo;
public class ExcellToObjectUtil {
  //examId,realName,身份证,user_card,sex,没有字段,assessment_project,admission_number,seat_number
   /**
   * 读取xls文件内容
   * 
   * @return List<XlsDto>对象
   * @throws IOException
   *       输入/输出(i/o)异常
   */
  public static List<ExamInfo> readXls(POIFSFileSystem poifsFileSystem) throws IOException {
//    InputStream is = new FileInputStream(filepath);
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
    ExamInfo exam = null;
    List<ExamInfo> list = new ArrayList<ExamInfo>();
    // 循环工作表Sheet
    for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
      HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
      if (hssfSheet == null) {
        continue;
      }
      // 循环行Row
      for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
        HSSFRow hssfRow = hssfSheet.getRow(rowNum);
        if (hssfRow == null) {
          continue;
        }
        exam = new ExamInfo();
        // 循环列Cell
        HSSFCell examId = hssfRow.getCell(1);
        if (examId == null) {
          continue;
        }
        double id = Double.parseDouble(getValue(examId));
        exam.setExamId((int)id);
//        HSSFCell realName = hssfRow.getCell(2);
//        if (realName == null) {
//          continue;
//        }
//        exam.setRealName(getValue(realName));
//        HSSFCell userCard = hssfRow.getCell(4);
//        if (userCard == null) {
//          continue;
//        }
//        
//        exam.setUserCard(getValue(userCard));
        HSSFCell admission_number = hssfRow.getCell(8);
        if (admission_number == null) {
          continue;
        }
        exam.setAdmission_number(getValue(admission_number));
        HSSFCell seat_number = hssfRow.getCell(9);
        if (seat_number == null) {
          continue;
        }
        exam.setSeat_number(getValue(seat_number));
        list.add(exam);
      }
    }
    return list;
  }
  public static List<ExamInfo> readXlsForJS(POIFSFileSystem poifsFileSystem) throws IOException {
//   InputStream is = new FileInputStream(filepath);
   HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
   ExamInfo exam = null;
   List<ExamInfo> list = new ArrayList<ExamInfo>();
   // 循环工作表Sheet
   for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
     HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
     if (hssfSheet == null) {
       continue;
     }
     // 循环行Row
     for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
       HSSFRow hssfRow = hssfSheet.getRow(rowNum);
       if (hssfRow == null) {
         continue;
       }
       exam = new ExamInfo();
       // 循环列Cell 准考证号
       HSSFCell admission_number = hssfRow.getCell(0);
       if (admission_number == null) {
         continue;
       }
       exam.setAdmission_number(getValue(admission_number));
       //读取身份证号
       HSSFCell userCard= hssfRow.getCell(2);
       if (userCard == null) {
        continue;
       }
       exam.setUserCard(getValue(userCard));
       //读取座位号
       HSSFCell seat_number = hssfRow.getCell(3);
       if (seat_number == null) {
        continue;
       }
       exam.setSeat_number(getValue(seat_number));
       //读取考场号
       HSSFCell fRoomName = hssfRow.getCell(6);
       if (fRoomName == null) {
        continue;
       }
       exam.setfRoomName(getValue(fRoomName));
       //读取开考时间
       HSSFCell fBeginTime = hssfRow.getCell(8);
       if (fBeginTime == null) {
        continue;
       }
       exam.setfBeginTime(getValue(fBeginTime));
       //读取结束时间
       HSSFCell fEndTime = hssfRow.getCell(9);
       if (fEndTime == null) {
        continue;
       }
       exam.setfEndTime(getValue(fEndTime));
       list.add(exam);
     }
   }
   return list;
 }
  /**
   * 得到Excel表中的值
   * 
   * @param hssfCell
   *      Excel中的每一个格子
   * @return Excel中每一个格子中的值
   */
  private static String getValue(HSSFCell hssfCell) {
    if (hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
      // 返回布尔类型的值
      return String.valueOf(hssfCell.getBooleanCellValue());
    } else if (hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
      // 返回数值类型的值
      DecimalFormat df = new DecimalFormat("0"); 
      String strCell = df.format(hssfCell.getNumericCellValue());
      return String.valueOf(strCell);
    } else {
      // 返回字符串类型的值
      return String.valueOf(hssfCell.getStringCellValue());
    }
  }
}

Natürlich Es gibt eine Importfunktion und es muss auch eine Exportfunktion geben. Die Exportfunktion wird unten direkt im Code vorgestellt:


import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.forenms.exam.domain.ExamInfo;
public class ObjectToExcellUtil {
  //导出的文件名称
  public static String FILE_NAME = "examInfo";
  public static String[] CELLS = {"序号","编号","真实姓名","证件类型","证件号","性别","出生年月","科目","准考证号","座位号","考场号","开考时间","结束时间"};
  //examId,realName,身份证,user_card,sex,没有字段,assessment_project,admission_number,seat_number
  public static void examInfoToExcel(List<ExamInfo> xls,int CountColumnNum,String filename,String[] names,HttpServletResponse response) throws Exception {
      // 获取总列数
//     int CountColumnNum = CountColumnNum;
      // 创建Excel文档
      HSSFWorkbook hwb = new HSSFWorkbook();
      ExamInfo xlsDto = null;
      // sheet 对应一个工作页
      HSSFSheet sheet = hwb.createSheet(filename);
//     sheet.setColumnHidden(1,true);//隐藏列
      HSSFRow firstrow = sheet.createRow(0); // 下标为0的行开始
      HSSFCell[] firstcell = new HSSFCell[names.length];
      for (int j = 0; j < names.length; j++) {
         sheet.setColumnWidth(j, 5000);
        firstcell[j] = firstrow.createCell(j);
        firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
      }
      for (int i = 0; i < CountColumnNum; i++) {
        // 创建一行
        HSSFRow row = sheet.createRow(i + 1);
        // 得到要插入的每一条记录
        xlsDto = xls.get(i);
        for (int colu = 0; colu <= 12; colu++) {
          // 在一行内循环
          HSSFCell xh = row.createCell(0);
          xh.setCellValue(i+1);
          HSSFCell examid = row.createCell(1);
          examid.setCellValue(xlsDto.getExamId());
          HSSFCell realName = row.createCell(2);
          realName.setCellValue(xlsDto.getRealName());
          HSSFCell zjlx = row.createCell(3);
          zjlx.setCellValue("身份证");
          HSSFCell userCard = row.createCell(4);
          userCard.setCellValue(xlsDto.getUserCard());
          HSSFCell sex = row.createCell(5);
          sex.setCellValue(xlsDto.getSex());
          HSSFCell born = row.createCell(6);
          String bornTime = xlsDto.getUserCard().substring(6, 14);
          born.setCellValue(bornTime);
          HSSFCell assessment_project = row.createCell(7);
          assessment_project.setCellValue(xlsDto.getAssessmentProject());
          HSSFCell admission_number = row.createCell(8);
          admission_number.setCellValue(xlsDto.getAdmission_number());
          HSSFCell seat_number = row.createCell(9);
          seat_number.setCellValue(xlsDto.getSeat_number());
          HSSFCell fRoomName = row.createCell(10);
          fRoomName.setCellValue(xlsDto.getfRoomName());
          HSSFCell fBeginTime = row.createCell(11);
          fBeginTime.setCellValue(xlsDto.getfBeginTime());
          HSSFCell fEndTime = row.createCell(12);
          fEndTime.setCellValue(xlsDto.getfEndTime());
        }
      }
      // 创建文件输出流,准备输出电子表格
      response.reset();
      response.setContentType("application/vnd.ms-excel;charset=GBK");
      response.addHeader("Content-Disposition", "attachment;filename="+filename+".xls");
      OutputStream os = response.getOutputStream(); 
      hwb.write(os);
      os.close();
    }
}

Die Exportfunktion ist sehr Ganz einfach. Kapseln Sie einfach das Objekt und rufen Sie die Methode direkt auf. Lassen Sie uns nun darüber sprechen, wie die Startseite beim Import aufgerufen wird Stellen Sie beim Erstellen eines Formulars sicher, dass enctype="multipart/form-data" festgelegt ist, andernfalls gibt es keine Schwierigkeiten.

Vom Hintergrund akzeptierte Controller:


<form method="post" action="adminLogin/auditResults/import" enctype="multipart/form-data" onsubmit="return importData();"> 
<input id="filepath" name="insuranceExcelFile" type="file" size="30" value=""  style="font-size:14px" />
<button type="submit" style="height:25px" value="导入数据">导入数据</button>



Okay, die Excel-Import- und Exportfunktionen sind alle erledigt. Sie müssen das ändern Die Objektformatierung und -einstellung jeder Excel-Spalte steht Ihnen zur eigenen Verwendung zur Verfügung! !

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine Excel-Import- und Exportdatenbank in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn