个人作业阶段二 6
将系统数据导出至,excel表格
package com.example.myapplication; import android.content.Context; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import org.litepal.LitePal; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import static com.example.myapplication.RegisterActivity.username; import static com.example.myapplication.RegisterActivity.userphone; import static com.example.myapplication.RegisterActivity.userxuehao; public class ExcelActivity extends AppCompatActivity { public static WritableFont arial12font = null; public static WritableCellFormat arial12format = null; public static WritableFont arial12font_ = null; public static WritableCellFormat arial12format_ = null; public static WritableFont arial12font_1 = null; public static WritableCellFormat arial12format_1 = null; public static WritableFont arial18font = null; public static WritableCellFormat arial18format = null; public final static String UTF8_ENCODING = "UTF-8"; public final static String GBK_ENCODING = "GBK"; private ArrayList<ArrayList<String>> recordList; private String excelname; private TextView tv_pass; private String excelxuehao; private String excelphone; private String exceldanwei = "石家庄铁道大学"; private String exceldate; private static String[] title = {"日期", "每日体温", "健康状况", "当日所在地", "备注"}; private File file; private String fileName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_excel); tv_pass = findViewById(R.id.out_path); //填报日期 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = new Date(System.currentTimeMillis()); exceldate = simpleDateFormat1.format(date1); //姓名 excelname = username; //学号 excelxuehao = userxuehao; //手机号 excelphone = userphone; } /** * 导出excel * @param view */ public void exportExcel(View view) { file = new File(getSDPath(this) + "/Record"); makeDir(file); initExcel(file.toString() + "/体温登记表.xls"); fileName = getSDPath(this) + "/Record/体温登记表.xls"; tv_pass.setText("Excel表格已导出至" + fileName); } public static void format() { try { arial12font = new WritableFont(WritableFont.createFont("宋体"), 12); arial12format = new WritableCellFormat(arial12font); arial12format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); arial12font_ = new WritableFont(WritableFont.createFont("楷体"), 12, WritableFont.BOLD); arial12format_ = new WritableCellFormat(arial12font_); arial12format_.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); arial12font_1 = new WritableFont(WritableFont.createFont("黑体"), 12); arial12format_1 = new WritableCellFormat(arial12font_1); arial12format_1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); arial12format_1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); arial12format_1.setWrap(true); arial18font = new WritableFont(WritableFont.createFont("宋体"), 18, WritableFont.BOLD); arial18format = new WritableCellFormat(arial18font); arial18format.setAlignment(jxl.format.Alignment.CENTRE);//对齐格式 arial18format.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); //设置边框 } catch (WriteException e) { e.printStackTrace(); } } public void initExcel(String fileName) { format(); WritableWorkbook workbook=null; try { File file = new File(fileName); if (!file.exists()) { file.createNewFile(); } workbook = Workbook.createWorkbook(file); WritableSheet sheet = workbook.createSheet("体温登记表", 0); sheet.mergeCells(0, 0, 6, 0); Label header = new Label(0, 0, "学生14天健康情况登记表", arial18format); sheet.addCell(header); sheet.mergeCells(0, 1, 3, 1); sheet.addCell(new Label(0, 1, "单位名称:" + exceldanwei, arial12format_)); sheet.mergeCells(4, 1, 6, 1); sheet.addCell(new Label(4, 1, "填表日期:" + exceldate, arial12format_)); sheet.addCell(new Label(0, 2, "姓名", arial12format)); sheet.addCell(new Label(1, 2, excelname, arial12format)); sheet.mergeCells(1, 2, 3, 2); sheet.addCell(new Label(4, 2, "学号:", arial12format)); sheet.addCell(new Label(5, 2, excelxuehao, arial12format)); sheet.mergeCells(5, 2, 6, 2); sheet.addCell(new Label(0, 3, "目前健康状况:", arial12format)); sheet.mergeCells(1, 3, 3, 3); sheet.addCell(new Label(1, 3, "健康", arial12format)); sheet.addCell(new Label(4, 3, "手机号", arial12format)); sheet.addCell(new Label(5, 3, excelphone, arial12format)); sheet.mergeCells(5, 3, 6, 3); sheet.mergeCells(0, 4, 6, 4); sheet.addCell(new Label(0, 4, "每日体温、健康状况监测(周期14天)", arial18format)); String[] colName = {"日期", "每日体温℃", "健康状况", "当日所在地", "备注"}; sheet.mergeCells(3, 5, 4, 5); sheet.mergeCells(5, 5, 6, 5); for (int col = 0; col < 3; col++) { sheet.addCell(new Label(col, 5, colName[col], arial12format)); } sheet.addCell(new Label(3, 5, colName[3], arial12format)); sheet.addCell(new Label(5, 5, colName[4], arial12format)); int j =6; List<Infomation> infomations = LitePal.where("zhu_name=?", excelname).find(Infomation.class); for(Infomation infomation:infomations) { String ZK = "健康"; String DATE = infomation.getZhu_date().toString(); String ADD = infomation.getZhu_add().toString(); String BEIZHU = infomation.getZhu_shuoming().toString(); String TIWEN = infomation.getZhu_tiwen().toString(); sheet.addCell(new Label(0, j, DATE, arial12format)); sheet.addCell(new Label(1, j, TIWEN, arial12format)); sheet.addCell(new Label(2, j, ZK, arial12format)); sheet.mergeCells(3, j, 4, j); sheet.addCell(new Label(3, j, ADD, arial12format)); sheet.mergeCells(5, j, 6, j); sheet.addCell(new Label(5, j,BEIZHU, arial12format)); j++; } sheet.mergeCells(0,20,6,23); sheet.addCell(new Label(0,20,"本人承诺:自觉履行疫情防控责任和义务,保证以上填报信息全部属实,如有隐瞒,自愿承担相应法律后果。",arial12format_1)); sheet.mergeCells(0,24,3,24); sheet.addCell(new Label(0,24,"本人签字:",arial12format)); sheet.mergeCells(4,24,6,24); sheet.addCell(new Label(4,24,"签字日期:",arial12format)); //sheet.mergeCells(5,24,6,24); workbook.write(); workbook.close(); Toast.makeText(ExcelActivity.this, "生成成功", Toast.LENGTH_SHORT).show(); }catch (Exception e) { e.printStackTrace(); }finally { if (workbook != null) { try { workbook.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /** * 将数据集合,转化成ArrayList<ArrayList<String>></String> * @param context * @return */ public String getSDPath(Context context) { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED);// 判断sd卡是否存在 if (sdCardExist) { if (Build.VERSION.SDK_INT>=29){ //Android10之后 sdDir = context.getExternalFilesDir(null); }else { sdDir =getExternalFilesDir(Environment.DIRECTORY_PICTURES);;// 获取SD卡根目录 } } else { sdDir = Environment.getRootDirectory();// 获取跟目录 } return sdDir.toString(); } public void makeDir(File dir) { if (!dir.getParentFile().exists()) { makeDir(dir.getParentFile()); } dir.mkdir(); } }