List+Control中的数据写入Excel表格----+数据库操作法
- 格式:docx
- 大小:14.42 KB
- 文档页数:4
如何搭建简单的Excel数据库在现代社会,数据管理变得越来越重要。
无论是个人还是企业,都需要一个高效、灵活的数据库系统来存储和管理数据。
而Excel作为一款功能强大的电子表格软件,可以很好地满足这一需求。
本文将介绍如何搭建一个简单的Excel数据库,帮助读者更好地管理和利用数据。
第一步:创建数据表格首先,我们需要在Excel中创建一个数据表格。
打开Excel软件,点击新建工作簿,即可创建一个新的表格。
在表格中,我们可以将不同的数据放在不同的列中,每一行代表一个数据记录。
可以根据实际需求,自由定义表格的列名和数据类型。
第二步:设定数据类型和格式在Excel中,我们可以为每一列设定特定的数据类型和格式,以便更好地管理和分析数据。
例如,可以将某一列设定为日期格式,以便进行时间序列分析;可以将某一列设定为数值格式,以便进行统计计算等。
第三步:添加数据记录在数据表格中,我们可以逐行添加数据记录。
可以手动输入数据,也可以通过复制粘贴的方式导入数据。
当然,如果数据量较大,可以考虑使用Excel的数据导入功能,将外部数据源导入到Excel中。
第四步:建立数据关联在Excel数据库中,我们可以通过建立数据关联来实现数据的连接和关联分析。
例如,我们可以使用Excel的VLOOKUP函数来实现表之间的关联查询,或者使用PivotTable来实现数据的透视分析。
第五步:数据筛选和排序Excel提供了丰富的数据筛选和排序功能,可以帮助我们快速定位和分析数据。
通过筛选功能,我们可以根据特定的条件,筛选出符合要求的数据记录;通过排序功能,我们可以按照特定的字段对数据进行排序,便于分析和比较。
第六步:数据可视化数据可视化是数据分析的重要手段之一。
在Excel中,我们可以利用图表功能将数据以图形的形式展示出来,直观地呈现数据的分布和趋势。
通过图表,我们可以更好地理解数据,发现其中的规律和关联。
第七步:数据备份和恢复数据备份是数据库管理的重要环节之一。
卑微如蝼蚁、坚强似大象LabVIEW 中向Excel 写入数据这里只讨论通过Activex 的方法,因为只有这种方法,才能完全发挥Excel 的所有强大的功能。
首先,Labview 是有一些自带的关于Excel 编程的例子的。
在find example 里search 一下,有挺多的,其中有一个叫write table to XL.vi,我最早就是跟着它学的。
学了不少,也被误导了很久,其实也不能算误导,只是以前没花时间去研究。
最近在用Labview 写一个类似ERP 一样的软件,接触很多Excel 表格,花了些功夫在Excel VBA 上,也算比以前有了更多的认识了。
先来看看write table to XL 这个程序:这个程序的目的就是把一个2维数组(表格)里的内容写到excel 里。
从上图看,步骤大致是这样的,先打开excel ,再打开一个workbook ,然后打开worksheet ,这实际上跟咱们使用excel 的过程是一样的。
打开worksheet 以后,它还定义了行与列的header ,最后才把table 里的数据写到excel 里。
那个cell value 子vi ,我是从开始就用它,也像这个例子一样,每次写都是套俩for loop ,然后往excel 里边猛写。
最近我才发现,原来有其他的方法,可以一次性写一个二维数组进去,非常快。
其实想想也是,不至于会那么傻了。
不过也怪VBA 里太多的属性和方法,不容易找。
前边的打开excel workbook 和worksheet 我就不说了,例子里就有,可以新建一个workbook 和sheet ,也可以打开现有的,这个在excelexample.llb里都能找到。
(excelexample在哪里?这个……,打开这些个VI,saveas一下就知道在哪里了,ok?)接下来说一下这几天找到的几个方法和属性。
首先是Insert,插入行或者列(就像你在excel里右键插入一样,每次只能一行或者一列,要多行的话,只能多来几次了,是这样吧?)在说这个之前,先说下怎么找这些属性和方法,在Excel里,打开VB编辑器(工具-》宏-》VB 编辑器,excel2007是在菜单开发工具下,我用的是Excel2007),打开以后看VB语言参考,重点就是里边的方法和属性,对应在Labview里边的Property和Method节点。
VFP控制EXCEL的方法VFP(Visual FoxPro)是一种面向对象的数据库管理系统,可以通过它来控制和操作Excel。
下面将详细介绍一些使用VFP控制Excel的方法。
1. 建立与Excel的连接:首先需要建立与Excel的连接,可以使用OLE(Object Linking and Embedding)技术来实现。
通过OLE创建一个Excel应用程序实例,然后使用该实例进行操作。
```foxprooExcel = CREATEOBJECT("Excel.Application") && 创建Excel应用程序实例oWorkbook = oExcel.Workbooks.Add( && 新建一个工作簿oWorksheet = oWorkbook.WorkSheets(1) && 获取第一个工作表```2. 设置Excel对象的属性:Excel应用程序有很多属性可以设置,比如设置显示/隐藏工作窗口、设置自动保存等。
例如,以下代码将Excel应用程序窗口设置为不可见:```foxprooExcel.Visible = .F. && 不显示Excel窗口```3. 操作Excel工作表:通过Excel应用程序实例的oWorksheet对象,可以对Excel工作表进行操作。
比如,设置单元格的值、获取单元格内容、设置字体、设置单元格格式等。
例如,以下代码将A1单元格的值设置为“Hello World!”:```foxprooWorksheet.Range("A1").Value = "Hello World!"```4. 操作Excel图表:可以使用VFP控制Excel创建和操作图表。
例如,以下代码创建一个柱状图:```foxprooChart = oWorksheet.Shapes.AddChart2(240, xlColumnClustered) && 创建一个柱状图oChart.Select( && 选中图表oChart.SetSourceData(oWorksheet.Range("A1:B10")) && 设置图表数据范围```5. 保存Excel文件:VFP可以通过Excel应用程序实例的oWorkbook对象来保存Excel文件。
使⽤openpyxl模块将Excel中的数据导⼊数据库这⾥将不介绍openpyxl模块的详细操作。
主要就是记录⼀个使⽤openpyxl模块将Excel表格的数据导⼊数据库中的实例。
from openpyxl import load_workbookimport os,djangoos.environ.setdefault("DJANGO_SETTINGS_MODULE", "项⽬名称.settings")django.setup()from backend.models import User# 封装成⼀个函数,调⽤是传⼊表格路径即可def xlsxHandler(localpath):wb = load_workbook(localpath) # 打开已存在的execl⽂件,格式xlsxws = wb[wb.sheetnames[0]] # 选择第⼀张sheet表rows = ws.max_row # 获取表的最⼤⾏数columns = ws.max_column # 获取表的最⼤列数column_heading = [ws.cell(row=1,column=x).value for x in range(1,columns+1)] # 读取excel第⼀⾏的值,写⼊listcolumn_name = ['⽤户名','公司名称','电话'] # 数据库必需字段# print(column_heading) # ⽂件第⼀⾏titleif len([name for name in column_name if name not in column_heading]) == 0: # 返回字段组成的list为空,则说明⽂件列标题包含MySQL需要的字段 print(' - 检查完成,执⾏写⼊')# 判断Excel中各字段所在列号username = column_heading.index(column_name[0]) # ⽤户名 - 位置company = column_heading.index(column_name[1]) # 公司 - 位置phone = column_heading.index(column_name[2]) # 电话 - 位置if ws.cell(row=2,column=1).value == None:table_start_line = 3else:table_start_line = 2data = []userList = []for row in range(table_start_line, rows + 1):for column in range(1, columns + 1): # 因为从第1列开始,所以此处从1开始data.append(str(ws.cell(row=row, column=column).value)) # 以字符串形式保存数据到MySQLprint(data)print(data[username],data[company],data[phone])userList.append(User(username=data[username],company=data[company],phone=data[phone]))data = []print('userList ',userList )try:User.objects.bulk_create(userList ) # 使⽤bulk_create批量导⼊msg = '导⼊成功'except Exception as e:print('异常',e)msg = '导⼊失败'else:print('⽂件列标题不完全包含数据库需要的字段,请检查⽂件。
EasyPOI的基本使⽤简介本篇讲述EasyPOI的最基本使⽤,即导出和导⼊Excel⽂档。
关于概念关于EasyPOI的概念不再累赘,我们需要知道的所有东西就是,它可以帮助我们把集合对象pojo转换为表格Excel。
本章采⽤的是客户端上传和下载Excel⽂档作为范例,这也是最为频繁的使⽤场景或需求。
主要步骤数据库表结构与Excel表结构是⼀致的,对于导⼊的情况,EasyPOI所需要做的事情就读取表格,将表格转为pojo的集合类对象,之后调⽤Service层中的⽅法写⼊数据库即可。
对于导出的情况,则是先从Service层中读取数据,之后通过EasyPOI写出到⽂件即可。
相对于导出操作⽽⾔,导⼊操作的要求实际上会更为严苛,其中涉及到数据合法性问题。
务必使⽤JSR-303或其实现Hibernate Validator中的注解,来校验导⼊数据的合法性。
否则写⼊数据库的数据可能会出现各种问题,本⽂不会对校验数据合法性进⾏测试。
核⼼代码其中的核⼼代码是Controller中的上传写⼊数据库,以及下载从数据库取出数据转换为Excel。
我们将分两部分快速讲解。
package cn.dylanphang.controller;import cn.afterturn.easypoi.excel.ExcelExportUtil;import cn.afterturn.easypoi.excel.ExcelImportUtil;import cn.afterturn.easypoi.excel.entity.ExportParams;import cn.afterturn.easypoi.excel.entity.ImportParams;import cn.dylanphang.pojo.Student;import cn.dylanphang.service.StudentService;import cn.dylanphang.util.ReturnClassUtils;import ermodel.Workbook;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.SessionAttributes;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Collection;import java.util.List;import java.util.UUID;/*** @author dylan*/@Controller@RequestMapping("/file")@SessionAttributes("lastRetrieve")public class StudentController {private final StudentService studentService;@Autowiredpublic StudentController(StudentService studentService) {this.studentService = studentService;}@RequestMapping("/upload")public String upload(MultipartFile upload) throws Exception {// 1.解析⽂档需要⽤到ImportParams对象final ImportParams importParams = new ImportParams();importParams.setHeadRows(1);// 2.使⽤ExcelImportUtil⼯具类获取Excel表格中的内容,并转为List<T>,实际情况下我们需要知道上传的表格是什么类型的// *.因为所有的pojo都是按照⽤户需求创建的,拥有模板,上传的数据必须符合这些模板// *.那么实际开发中,可以通过访问的url判断本次上传的⽂件是属于什么类型的pojofinal List<Student> students = ExcelImportUtil.importExcel(upload.getInputStream(),Student.class,importParams);// 3.写⼊数据库,其中如果数据格式不符合,在上⼀步转换的时候会报错this.studentService.saveAll(students);return "upload-success";}@SuppressWarnings("all")@RequestMapping("/download")public ResponseEntity<byte[]> download(ModelMap modelMap, HttpServletRequest request) throws IOException { // 1.获取⽤户的最后⼀次筛选查询的结果集final Object lastRetrieve = modelMap.getAttribute("lastRetrieve");// *.判断是否存在最后⼀次查询if (lastRetrieve != null && lastRetrieve instanceof List) {// 2.pojo是根据⽤户需求去创建的,使⽤⾃定义⼯具类返回集合中字节码的⽂件信息final Collection<?> retrieve = (Collection<? extends Object>) lastRetrieve;final Class<?> targetClass = ReturnClassUtils.getReturnClass(retrieve);// 3.获取存储⽂件的⽬录路径String path = request.getSession().getServletContext().getRealPath("/files");// 4.根据路径创建file对象File file = new File(path);// 5.如果当前路径下不存在/files⽬录,则创建⼀个/files⽬录if (!file.exists()) {final boolean mkdir = file.mkdir();if (!mkdir) {throw new RuntimeException("Create new folder failure.");}}// 6.easypoi部分,获取Workbook对象,创建UUID别名并写⼊硬盘final Workbook sheets = ExcelExportUtil.exportExcel(new ExportParams(), targetClass, retrieve);final String name = UUID.randomUUID().toString().replaceAll("-", "") + ".xls";final FileOutputStream fs = new FileOutputStream(new File(file, name));sheets.write(fs);fs.close();// 7.获取该.xls⽂件,并获得它的输⼊流file = new File(path + "/" + name);final FileInputStream is = new FileInputStream(file);// 8.使⽤输⼊流创建指定⼤⼩的byte[]数组,并将字节码存⼊byte[]数组中byte[] body = new byte[is.available()];is.read(body);is.close();// 9.需要指定相应体中指定头的值是attchementfinal HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.add("Content-Disposition", "attchement;filename=" + file.getName());// 10.最后使⽤ResponseEntity封装字节码、响应体即状态码信息,并返回此对象引⽤return new ResponseEntity<>(body, httpHeaders, HttpStatus.OK);} else {return null;}}@RequestMapping("/query")public ModelAndView hello() {final ModelAndView mv = new ModelAndView("test");final List<Student> students = this.studentService.findAll();// *.将⽤户的最后⼀次筛选查询存⼊当前⽤户的session域中mv.addObject("lastRetrieve", students);return mv;}}对应的pojo需要添加注解@Excel,将作为表格的字段名:package cn.dylanphang.pojo;import cn.afterturn.easypoi.excel.annotation.Excel;import lombok.Data;import java.text.SimpleDateFormat;import java.util.Date;/*** @author dylan*/@Datapublic class Student {@Excel(name = "id")private Integer id;@Excel(name = "name")private String name;@Excel(name = "age")private Integer age;@Excel(name = "birthday", format = "yyyy-MM-dd")private Date birthday;public String getDisplayDate() {final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");return simpleDateFormat.format(this.birthday);}}上传⽂件上传⽂件会⽐较通俗简单,甚⾄⽐Spring MVC原⽣上传⽂件还要简单,因为我们不需要将获取到的字节码⽂件存储在本地,⽽是直接可⽤Excel的字节码⽂件作为转换⼯具的参数,将Excel表格变成⼀个List<T>集合。
VBA写入数据到数据库的方法指南在实现数据处理任务时,将数据写入数据库是一种常见的需求。
Visual Basic for Applications(VBA)是一种编程语言,可以在Microsoft Office应用程序中进行自动化和定制。
利用VBA,我们可以编写代码将数据有效地写入数据库中。
本文将介绍如何使用VBA将数据写入数据库的方法指南。
在开始编写代码之前,我们需要确保已经正确设置数据库连接。
使用VBA连接数据库的方法有多种,可以使用ADO(ActiveX Data Objects)库、DAO(Data Access Objects)库或者ODBC(Open Database Connectivity)连接等。
在本文中,我们将使用ADO库作为示例。
首先,我们需要在VBA项目中引用Microsoft ActiveX Data Objects库。
在VBA编辑器中,选择"工具"菜单,再选择"引用"选项。
在弹出的对话框中找到并勾选"Microsoft ActiveX Data Objects x.x Library"(其中x.x代表版本号),然后点击"确定"按钮。
一旦引用添加成功,我们可以开始编写代码来实现数据写入操作。
以下是一个简单的示例代码:```vbaSub WriteDataToDatabase()Dim conn As New ADODB.ConnectionDim rs As New ADODB.Recordset' 设置连接字符串conn.ConnectionString = "Provider=SQLOLEDB;Data Source=数据库服务器;Initial Catalog=数据库名称;User ID=用户名;Password=密码"' 打开连接conn.Open' 设置记录集rs.ActiveConnection = connrs.CursorType = adOpenDynamicrs.LockType = adLockOptimisticrs.Open "表名", conn, adOpenKeyset, adLockOptimistic ' 添加数据到记录集rs.AddNewrs.Fields("字段名1").Value = 值1rs.Fields("字段名2").Value = 值2' 更新记录集rs.Update' 关闭连接rs.CloseSet rs = Nothingconn.CloseSet conn = Nothing' 显示成功消息MsgBox "数据写入成功!"End Sub```在这个示例代码中,我们首先创建了一个ADODB.Connection对象和一个ADODB.Recordset对象。
asp中把数据导出为excel的2种⽅法我们在做项⽬的时候经常要将数据库的数据导出到excel中,很多asp⽤户并不知道怎么写。
这⾥明凯总结了两种⽅法来导出excel,希望能帮到⼤家。
⽅法⼀:⽤excel组件< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>< %set rs=server.createobject("adodb.recordset")sql="select * from mkusers"rs.open sql,objconn,1,1Set ExcelApp =CreateObject("Excel.Application")ExcelApp.Application.Visible = TrueSet ExcelBook = ExcelApp.Workbooks.AddExcelBook.WorkSheets(1).cells(1,1).value ="⽤户表"ExcelBook.WorkSheets(1).cells(2,1).value = "⽤户编号"ExcelBook.WorkSheets(1).cells(2,2).value = "登陆名"ExcelBook.WorkSheets(1).cells(2,3).value = "真实姓名"ExcelBook.WorkSheets(1).cells(2,4).value = "密码"cnt =3do while not rs.eofExcelBook.WorkSheets(1).cells(cnt,1).value = rs("provinceid")ExcelBook.WorkSheets(1).cells(cnt,2).value = rs("province")ExcelBook.WorkSheets(1).cells(cnt,3).value = rs("flag")ExcelBook.WorkSheets(1).cells(cnt,4).value = rs("id")rs.movenextcnt = cint(cnt) + 1loopExcelbook.SaveAs "d:\yourfile.xls" '这个是数据导出完毕以后在D盘存成⽂件ExcelApp.Application.Quit '导出以后退出ExcelSet ExcelApp = Nothing '注销Excel对象%>⽅法⼆:使⽤⽂件组件< %dim s,sql,filename,fs,myfile,xSet fs = server.CreateObject("scripting.filesystemobject")'--假设你想让⽣成的EXCEL⽂件做如下的存放filename = Server.MapPath("order.xls")'--如果原来的EXCEL⽂件存在的话删除它if fs.FileExists(filename) thenfs.DeleteFile(filename)end if'--创建EXCEL⽂件set myfile = fs.CreateTextFile(filename,true)StartTime = Request("StartTime")EndTime = Request("EndTime")StartEndTime = "AddTime between #"& StartTime &" 00:00:00# and #"& EndTime &" 23:59:59#"strSql = "select * from mksuers "Set rstData =conn.execute(strSql)if not rstData.EOF and not rstData.BOF thendim trLine,responsestrstrLine=""For each x in rstData.fieldsstrLine = strLine & & chr(9)Next'--将表的列名先写⼊EXCELmyfile.writeline strLineDo while Not rstData.EOFstrLine=""for each x in rstData.FieldsstrLine = strLine & x.value & chr(9)nextmyfile.writeline strLinerstData.MoveNextloopend ifResponse.Write "⽣成EXCEL⽂件成功,点击<a href="/" rel="external nofollow" order.xls"" target=""_blank"">下载!"rstData.Closeset rstData = nothingConn.CloseSet Conn = nothing%>可以看出,第⼀种⽅法是直接导出的是excel⽂件,⽽第⼆张⽅法是到处的是⽂本⽂件,只不过后缀名改成了xls。
Python:将爬取的⽹页数据写⼊Excel⽂件中:将爬取的⽹页数据写⼊数据写⼊Excel⽂件中Python:将爬取的⽹页通过⽹络爬⾍爬取信息后,我们⼀般是将内容存⼊txt⽂件或者数据库中,也可以写⼊Excel⽂件中,这⾥介绍关于使⽤Excel⽂件保存爬取到的⽹页数据的简单实现⽅法。
必要的第三⽅库:requests、beautifulsoup4、xlwt。
先来看看通过使⽤Excel⽂件保存数据的⼀个简单实例。
#导⼊xlwt模块import xlwt#创建⼀个Workbook对象,即创建⼀个Excel⼯作簿f = xlwt.Workbook()#创建学⽣信息表#sheet1表⽰Excel⽂件中的⼀个表#创建⼀个sheet对象,命名为“学⽣信息”,cell_overwrite_ok表⽰是否可以覆盖单元格,是Worksheet实例化的⼀个参数,默认值是Falsesheet1 = f.add_sheet(u'学⽣信息',cell_overwrite_ok=True)#标题信息⾏集合rowTitle = [u'学号',u'姓名',u'性别',u'出⽣年⽉']#学⽣信息⾏集合rowDatas = [[u'10001',u'张三',u'男',u'1998-2-3'],[u'10002',u'李四',u'⼥',u'1999-12-12'],[u'10003',u'王五',u'男',u'1998-7-8']]#遍历向表格写⼊标题⾏信息for i in range(0,len(rowTitle)):# 其中的'0'表⽰⾏, 'i'表⽰列,0和i指定了表中的单元格,'rowTitle[i]'是向该单元格写⼊的内容sheet1.write(0,i,rowTitle[i])#遍历向表格写⼊学⽣信息for k in range(0,len(rowDatas)): #先遍历外层的集合,即每⾏数据for j in range(0,len(rowDatas[k])): #再遍历内层集合,j表⽰列数据sheet1.write(k+1,j,rowDatas[k][j]) #k+1表⽰先去掉标题⾏,j表⽰列数据,rowdatas[k][j] 插⼊单元格数据#保存⽂件的路径及命名f.save('D:/WriteToExcel.xlsx')在D盘对应的名为WriteToExcel.xlsx的Excel⽂件中,发现信息已被插⼊到表格中。
c++的读写excel在C++中,可以使用第三方库来读写Excel文件。
以下是两个常用的库:1. LibXL,LibXL是一个功能强大的C++库,用于读写Excel文件。
它支持读取和写入Excel文件的各种操作,如读取单元格数据、写入数据、设置样式等。
使用LibXL,你可以轻松地在C++中读取和写入Excel文件。
2. POCO,POCO是一个跨平台的C++类库,提供了许多实用的功能,包括读写Excel文件。
POCO库中的Poco::Data::Excel命名空间提供了读写Excel文件的功能。
你可以使用Poco::Data::Excel::Workbook类来打开Excel文件,使用Poco::Data::Excel::Worksheet类来读取和写入工作表数据。
无论你选择使用哪个库,下面是一个简单的示例,展示了如何使用LibXL来读取和写入Excel文件:cpp.#include <iostream>。
#include <libxl.h>。
int main() {。
libxl::Book book = xlCreateBook();if (book) {。
if (book->load("example.xls")) {。
libxl::Sheet sheet = book->getSheet(0); if (sheet) {。
int rowCount = sheet->lastRow();int colCount = sheet->lastCol();for (int row = 0; row <= rowCount; ++row) {。
for (int col = 0; col <= colCount; ++col) {。
libxl::CellType cellType = sheet->cellType(row, col);if (cellType ==libxl::CELLTYPE_NUMBER) {。
⽤python包xlwt将数据写⼊Excel中⼀般⽤两种格式的数据写⼊,不多说放上demo。
1、列表形式写⼊import xlwtdef data_write(file_path, datas):f = xlwt.Workbook()sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheettitle = [] #加⼊表头datas.insert(0, title) #写⼊表头style = xlwt.XFStyle() #创建样式align = xlwt.Alignment() #创建对齐⽅式align.horz = 1 #1-->左对齐,2-->居中,3-->右对齐style.alignment = align#将数据写⼊第 i ⾏,第 j 列i = 0for data in datas:for j in range(len(data)):sheet1.write(i,j,data[j],style=style)i = i + 1f.save(file_path) #保存⽂件2、字典形式写⼊def dict_write_excel(html1):data_list = []# 循环得到每⼀个datafor data in html1:# 循环得到data字典⾥的所有键值对的值for value in data.values():# 将得到的值放⼊空列表中data_list.append(value)# 创建⼀个新的列表⽣成式并赋给⼀个变量new_list.# 这个列表⽣成式主要是将数据每8个为⼀个新的元素存⼊新的列表中,即列表套列表new_list = [data_list[i:i + 8] for i in range(0, len(data_list), 8)]# ⽣成⼀个xlwt.Workbook对象xls = xlwt.Workbook()# 调⽤对象的add_sheet⽅法sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)# 创建我们需要的第⼀⾏的标头数据heads = ['one', 'two', 'three', 'four', 'five', 'six', 'seven','eight']ls = 0# 将标头循环写⼊表中for head in heads:sheet.write(0, ls, head)ls += 1i = 1# 将数据分两次循环写⼊表中外围循环⾏for list in new_list:j = 0# 内围循环列for data in list:sheet.write(i, j, data)j += 1i += 1# 最后将⽂件save保存xls.save('案例.xls')⼩案例:import xlwtdef write_excel(file_path, datas):f = xlwt.Workbook()sheet1 = f.add_sheet(u"年龄", cell_overwrite_ok=True)title = ["xxx", "XXX"]title1 = ["trade", "<18", "25-29", "18-24", "35-39", "30-34", "45-49", "40-44", ">50"]datas.insert(0, title1) # 写⼊表头datas.insert(0, title)# 将数据写⼊第 i ⾏,第 j 列style = xlwt.XFStyle()align = xlwt.Alignment()align.horz = 1style.alignment = aligni = 0for data in datas:for j in range(len(data)):sheet1.write(i, j, data[j], style=style)i = i + 1f.save(file_path) # 保存⽂件if__name__ == "__main__":datas = [["电竞", 1, 2, 3, 4, 5, 6, 7, 8], ["电商", 1, 2, 3, 4, 5, 6, 7, 8]]write_excel("/Users/leisunny/Desktop/mysite/practice/demo.xls", datas)注意:xlwt包只能出来xls格式的Excel⽂件,xlsx格式的需要⽤pandas或openpyxl包。
将List Control中的数据写入Excel表格---- 数据库操作法CDatabase database;CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sExcelFile,sPath;CString sSql;//获取主程序所在路径,存在sPath中GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos + 1);CString sFileName;CFileDialog fDlg(TRUE, "xls", sPath + "aaaa.xls",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"xls File (*.xls)|*.xls|");if(fDlg.DoModal()==IDOK){sFileName = fDlg.GetPathName();}elsereturn;sExcelFile = sFileName; // 要建立的Excel文件try{// 创建进行存取的字符串sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\ ";DBQ=%s",sDriver, sExcelFile, sExcelFile);// 创建数据库(既Excel表格文件)if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){// 创建表结构(姓名、年龄)//sSql = "CREATE TABLE Exceldemo (Name TEXT,Age NUMBER)";sSql = "create table Report (ID AUTOINCREMENT, 省份char(50), 开始时间date,""结束时间date, 宽带用户数Integer, 本周用户数Integer, 本周增长数Integer, 本周注销数Integer, ""本周净增数Integer, 用户渗透率real,收费用户数Integer, 营销增长用户Integer, 营销注销用户Integer,""市场动作char(255),产品情况TEXT)";database.ExecuteSQL(sSql);int nItem = 0;CString sID, sProvices, sStartTime, sEndTime, sKdUser,sWeekUser,sWeekAddUser, sWeekReleaseUser,sWeekRealAddUser, sUserRate, sPayUser, sYxAddUser, sYxReleaseUser, sScdz, sCpqk;while (nItem < m_List.GetItemCount()){sID = m_List.GetItemText(nItem, 0);sProvices = m_List.GetItemText(nItem, 1);CString strCString = m_List.GetItemText(nItem, 2); //CString--->COleDateTime if (strCString != ""){COleVariant vtime(strCString);vtime.ChangeType(VT_DATE);COleDateTime time = vtime;SYSTEMTIME systime;VariantTimeToSystemTime(time, &systime);CTime tm(systime);sStartTime = tm.Format("%Y-%m-%d");sStartTime = "#" + sStartTime + "#";}elsesStartTime = "";strCString = m_List.GetItemText(nItem, 3); //CString--->COleDateTimeif (strCString != ""){COleVariant vtime2(strCString);vtime2.ChangeType(VT_DATE);COleDateTime time2 = vtime2;SYSTEMTIME systime2;VariantTimeToSystemTime(time2, &systime2);CTime tm2(systime2);sEndTime = tm2.Format("%Y-%m-%d");sEndTime = "#" + sEndTime + "#";}elsesEndTime = "null";sKdUser = m_List.GetItemText(nItem, 4);if (sKdUser == "")sKdUser = "0";sWeekUser = m_List.GetItemText(nItem, 5);if (sWeekUser == "")sWeekUser = "0";sWeekAddUser = m_List.GetItemText(nItem, 6);if (sWeekAddUser == "")sWeekAddUser = "0";sWeekReleaseUser = m_List.GetItemText(nItem, 7);if (sWeekReleaseUser == "")sWeekReleaseUser = "0";sWeekRealAddUser = m_List.GetItemText(nItem, 8);if (sWeekRealAddUser == "")sWeekRealAddUser = "0";sUserRate = m_List.GetItemText(nItem, 9);if (sUserRate == "")sUserRate = "0";else{sUserRate = sUserRate.Left(sUserRate.GetLength() -1);float f = atof(sUserRate)/100;sUserRate.Format("%.4f", f);}sPayUser = m_List.GetItemText(nItem, 10);if (sPayUser == "")sPayUser = "0";sYxAddUser = m_List.GetItemText(nItem, 11);if (sYxAddUser == "")sYxAddUser = "0";sYxReleaseUser = m_List.GetItemText(nItem, 12);if (sYxReleaseUser == "")sYxReleaseUser = "0";sScdz = m_List.GetItemText(nItem, 13);sCpqk = m_List.GetItemText(nItem, 14);CString sValue;// 插入数值sSql = "INSERT INTO Report (ID,省份,开始时间,结束时间, 宽带用户数, 本周用户数," "本周增长数, 本周注销数,本周净增数,用户渗透率,收费用户数,营销增长用户,""营销注销用户,市场动作,产品情况) ""VALUES (";sValue.Format("%s, '%s',%s, %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,'%s','%s')",sID, sProvices, sStartTime, sEndTime, sKdUser, sWeekUser, sWeekAddUser, sWeekReleaseUser, sWeekRealAddUser,sUserRate, sPayUser, sYxAddUser, sYxReleaseUser, sScdz, sCpqk);// + sID + ",'" + sProvices + "',#"// + sStartTime + "#,#"// + sEndTime + "#," + sKdUser + "," + 1,1,1,1,0.10,1,1,1,'快速','绿色上网')"; sSql += sValue;AfxMessageBox(sSql);database.ExecuteSQL(sSql);++nItem;}}// 关闭数据库database.Close();AfxMessageBox("Excel文件写入成功!"); }catch( _com_error *e){AfxMessageBox(e->ErrorMessage());}。