Excel与XML相互转化的Java实现
easypoi importexcelbysax实例

easypoi importexcelbysax实例如何使用easypoi的importexcelbysax方法进行Excel数据导入。
easypoi是一个方便易用的Java库,可以用于操作Excel文件。
它提供了多种方法来读取和写入Excel数据,其中之一是importexcelbysax方法。
这种方法通过使用SAX解析器来读取大型Excel文件,可以大大减少内存消耗,并提高导入速度。
首先,我们需要在项目中引入easypoi的依赖。
可以在pom.xml文件中添加如下代码:<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.2.2</version></dependency>接下来,我们需要定义一个实体类,用于存储Excel中的数据。
假设我们的Excel文件有两列:姓名和年龄。
我们可以创建一个Person类,如下所示:javapublic class Person {private String name;private int age;getters and setters}然后,我们可以创建一个处理Excel数据的类。
在这个类中,我们将使用importexcelbysax方法来读取Excel文件并将其转换为Person对象的列表。
代码如下:javaimport cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; import cn.afterturn.easypoi.excel.imports.sax.SaxReadExcel;import java.io.FileInputStream;import java.io.InputStream;import java.util.List;public class ExcelImporter {public List<Person> importExcel(String filePath) throws Exception {InputStream inputStream = new FileInputStream(filePath);SaxReadExcel saxReadExcel = newSaxReadExcel(inputStream, 1, new PersonHandler());ExcelImportResult<Person> result = saxReadExcel.read();return result.getList();}}在上述代码中,我们首先创建了一个FileInputStream对象,用于读取Excel文件。
浅析Excel文档与XML文档的相互转换

浅析Excel文档与XML文档的相互转换作者:朱广全王星肖锋瑞来源:《中小企业管理与科技·下旬刊》2011年第05期摘要:分析XML文档与Excel文档的格式特点,讨论了XML技术对于办公数据信息采集的重要性,研究了XML文档与Excel文档之间的转换,并给出具体实现方法。
关键词:Excel XML 转换1 XML与Excel文档转换问题的提出1.1 转换问题研究的重要性 Excel提供了功能非常强大的数据表格与图表处理能力,但是Excel在数据共享、数据冗余、数据安全和完整性等方面都有着一定的局限性,无法与真正的数据库系统相比。
伴随着校内信息化程度不断提高,办公自动化系统在各高校内中得到了广泛的应用,正確采集各种数据信息,建设好学校的数据信息平台对学校的改革与发展具有十分重要的意义。
Excel文件是使用非常频繁的一种数据处理文档,很多时候我们需要根据固定格式的模板来自动生成Excel文档,XML文档与Excel文档之间如何相互转换是值得探究的问题,有着非常重要的意义。
1.2 XML文档的特点 XML之所以能得到广泛欢迎和应用,正是因为XML本身众多的优点。
①可扩展性。
XML允许不同的组织和个人都能够建立适合自己需要的标记集,并且这个XML标记集可以迅速的投入使用。
从而克服了HTML不具有扩展性的缺点。
②内容与形式的分离。
在XML中数据搜索可以简单高效的进行,不必遍历整个XML文档,而只需找相关标记下的内容即可。
③内容独立性。
XML可脱离具体应用以一种统一的数据模型来描述保存在异构环境中的各种数据,屏蔽数据源中应用环境和数据结构的异构性。
④平台独立性。
XML 文档是纯文本,完全独立于各种开发平台。
2 XML转换数据的关键技术2.1 XML文档格式转换原理 XML是现实中Web数据表示和转换的标准,它能够实现网络应用程序之间数据的转换,并将处理方法与数据格式和内容分离开来。
基于XML的数据转换是利用XML文档作为中间载体进行数据库之间的信息转换,具体步骤是:首先将待转换的数据以XML文档格式从源数据库中导出,然后经解析、验证,最后导入到目标数据库中。
xml2excelbatchconversiontool使用说明

xml2excelbatchconversiontool使用说明"xml2excelbatchconversiontool使用说明"XML2Excel 批量转换工具是一款功能强大的软件,用于将多个XML文件批量转换为Excel文件。
通过这个工具,用户可以快速而方便地将XML数据转换为Excel格式,使数据管理和分析变得更加高效。
使用该工具非常简单,您只需按照以下步骤进行操作:1. 打开软件:在计算机上双击软件图标,即可打开XML2Excel 批量转换工具。
2. 添加 XML 文件:点击菜单栏中的 "添加文件" 按钮,或者使用快捷键 "Ctrl + O",选择您要转换的 XML 文件并点击 "打开"。
3. 配置转换选项:在 XML 文件列表中,您可以对每个文件进行个性化配置。
点击需要配置的文件,在右侧的选项卡中进行设置。
您可以选择要转换的 XML 数据,指定要导出的 Excel 表格名称和路径,以及其他相关选项。
4. 批量转换:完成配置后,点击工具栏上的 "开始转换" 按钮,或者使用快捷键"Ctrl + R",即可开始批量转换过程。
转换进度将以进度条的形式显示在界面上。
5. 转换完成:一旦转换完成,您可以在指定的输出路径中找到生成的 Excel 文件。
可以根据需要对这些文件进行进一步编辑和处理。
值得注意的是,XML2Excel 批量转换工具还提供了其他一些辅助功能,帮助您更好地管理和处理数据。
例如,您可以点击菜单栏中的 "文件" 按钮,选择 "保存配置",将当前的转换配置保存为模板,以备将来使用。
此外,您还可以通过点击"清除列表" 按钮,一键清空当前的文件列表。
在使用这个工具时,请确保您的计算机已经安装了最新版本的 Java 运行环境(JRE)。
excel文件和xml文件互转

关于开票系统中的商品编码等数据用EXCEL 批量修改后重新导入的问题
1、若想用excel取得xml文件的数据用数据下的引入,其他格式
引入即可。
2、关于excel文件如何转换为xml文件
A、修改从xml文件导入的数据后,直接作为数据表保存。
B、新建一个excel文件,点击开发工具中的源,如图:
然后点击右下角的xml映射,如图:
在弹出的对话框中点击添加,
选择从系统中导出的xml源文件,
点击打开,打开后,如果文件没有问题,不提示任何信息,直接点击确定
在excel右侧的xml源菜单中会出现一个架构,如图:
将这个架构逐一拖动到excel的各单元格中如图:
分别填写数据
弹出DATA映射可导出对话
框,直接点击开发工具上的导出按钮,即可导出,
注意,在填写数据时,应将数据处的空白单元格用空格代替,否则无法导回到开票系统中。
xml代码转换表格

xml代码转换表格要将XML 代码转换为表格,你可以使用Python 中的xml.etree.ElementTree 模块来解析XML,并使用 pandas 库来生成表格。
以下是一个示例代码,演示了如何将 XML 代码转换为表格:import xml.etree.ElementTree as ETimport pandas as pd# 读取 XML 文件并解析tree = ET.parse('data.xml')root = tree.getroot()# 创建表格的列名列表columns = []for child in root:columns.append(child.tag)columns = list(set(columns)) # 去除重复列名# 创建空的数据列表data = []# 遍历 XML 树,提取数据for child in root:row = {}for column in columns:row[column] = child.find(column).text if child.find(column) is not None else Nonedata.append(row)# 使用 pandas 创建表格df = pd.DataFrame(data, columns=columns)# 打印表格print(df)在上述示例代码中,我们首先使用 ET.parse() 方法解析 XML 文件,并通过getroot() 方法获取根节点。
然后,我们遍历根节点的子节点,提取每个子节点的标签作为表格的列名,并将其保存在columns 列表中。
接下来,我们遍历 XML 树,提取每个子节点的数据,并将其保存在一个字典中,最后将字典添加到data 列表中。
然后,我们使用pd.DataFrame() 方法将data 转换为表格,并使用columns 作为列名。
最后,我们打印生成的表格。
excel和xml文件数据互导

用空白xml文件同excel表建立映射
样例文件: item.xml 和item.xls
1.打开item.xls文件,见如下
其中id和name是表头。
2.打开空白item.xml,在里面输入如下内容(注释部分就不需要了)
想要2者数据互导,以下是必须:
(1)<root> 和</root>必须有且成对
(2)id=”0”和name=”0”是自己写的,数字没什么用,有i d=””和name=””就行;
excel表头有其它内容,自己继续在xml文件里面写就行,扩展起来很简单。
3.打开空白item.xls,新建一个空白工作薄,依次执行以下操作
(1)点击:开发工具——源
(2)右下角点击:xml映射
(3)点击弹出框:添加(找到item.xml文件打开)
(4)点击弹出框:选择—确定
(5)右上角点击:鼠标点击root并右键选择“映射元素”
(6)弹出框:点击红色区域,然后鼠标选择excel空白页面第一行,然后再次点击红色区域,以及确定键。
就会出现如图中的表头了。
4.鼠标选择蓝色区域,然后点击“刷新数据”就可以将xml文件中的数据导入excel表;
点击导出就可以将excel表数据导出到xml文件(前提:自行往蓝色区域插入/复制/链接….
数据,使里面已有数据)。
5.扩展数据的话,只需往xml中增加字段,重新建立一次映射。
java导出excelxml

import java.io.BufferedOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class javaxml {/** java大数据导出xml或excel* */public static void main(String[] args) {StringBuffer sb = new StringBuffer();try {DataOutputStream rafs = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File("d://test.xml"))));sb.append("<?xml version=\"1.0\"?>");sb.append("\n");sb.append("<?mso-application progid=\"Excel.Sheet\"?>");sb.append("\n");sb.append("<Workbookxmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");sb.append("\n");sb.append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"");sb.append("\n");sb.append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");sb.append("\n");sb.append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");sb.append("\n");sb.append(" xmlns:html=\"/TR/REC-html40\">");sb.append("\n");sb.append(" <Styles>\n");sb.append(" <Style ss:ID=\"Default\" ss:Name=\"Normal\">\n");sb.append(" <Alignment ss:V ertical=\"Center\"/>\n");sb.append(" <Borders/>\n");sb.append(" <Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\"/>\n");sb.append(" <Interior/>\n");sb.append(" <NumberFormat/>\n");sb.append(" <Protection/>\n");sb.append(" </Style>\n");sb.append(" </Styles>\n");int sheetcount = 0;int recordcount = 60000;//每个sheet的数据int currentRecord = 0;int total = 600000;//总记录int col = 5;//列数sb.append("<Worksheet ss:Name=\"Sheet0\">");sb.append("\n");sb.append("<Table ss:ExpandedColumnCount=\"" + col+ "\" ss:ExpandedRowCount=\"" + total+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");sb.append("\n");for (int i = 0; i < total; i++) {if ((currentRecord == recordcount|| currentRecord > recordcount || currentRecord == 0)&& i != 0) {// 一个sheet写满currentRecord = 0;rafs.write(sb.toString().getBytes());sb.setLength(0);sb.append("</Table>");sb.append("<WorksheetOptionsxmlns=\"urn:schemas-microsoft-com:office:excel\">");sb.append("\n");sb.append("<ProtectObjects>False</ProtectObjects>");sb.append("\n");sb.append("<ProtectScenarios>False</ProtectScenarios>");sb.append("\n");sb.append("</WorksheetOptions>");sb.append("\n");sb.append("</Worksheet>");sb.append("<Worksheet ss:Name=\"Sheet" + i / recordcount+ "\">");sb.append("\n");sb.append("<Table ss:ExpandedColumnCount=\"" + col+ "\" ss:ExpandedRowCount=\"" + recordcount+ "\" x:FullColumns=\"1\" x:FullRows=\"1\">");sb.append("\n");}sb.append("<Row>");for (int j = 0; j < col; j++) {System.out.println(i);sb.append("<Cell><Datass:Type=\"String\">"+j+"</Data></Cell>");sb.append("\n");}sb.append("</Row>");if (i % 5000 == 0) {rafs.write(sb.toString().getBytes());rafs.flush();sb.setLength(0);}sb.append("\n");currentRecord++;}rafs.write(sb.toString().getBytes());sb.setLength(0);sb.append("</Table>");sb.append("<WorksheetOptionsxmlns=\"urn:schemas-microsoft-com:office:excel\">");sb.append("\n");sb.append("<ProtectObjects>False</ProtectObjects>");sb.append("\n");sb.append("<ProtectScenarios>False</ProtectScenarios>");sb.append("\n");sb.append("</WorksheetOptions>");sb.append("\n");sb.append("</Worksheet>");sb.append("</Workbook>");sb.append("\n");rafs.write(sb.toString().getBytes());rafs.flush();rafs.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}。
【java工具类】java做的一个xml转Excel工具,基于maven工程

【java⼯具类】java做的⼀个xml转Excel⼯具,基于maven⼯程说明:适合数据库导出为xml时转成Exceldoc4j的maven依赖1<!--xml解析的dom4j-->2<!-- https:///artifact/dom4j/dom4j -->3<dependency>4<groupId>dom4j</groupId>5<artifactId>dom4j</artifactId>6<version>1.6.1</version>7</dependency>主要代码package com.xiaostudy.util;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.File;import java.util.ArrayList;import java.util.List;/*** XML⼯具类* @author xiaostudy* @date 2019.4.26* @version 1.0.0*/public class XmlUtil {public static void main(String[] args) {Boolean aBoolean = Xml2ExcelFile("C:\\Users\\Administrator\\Desktop\\test.xml", "C:\\Users\\Administrator\\Desktop\\test2.xlsx");System.out.println(aBoolean);}/*** Xml转Excel⽂件* @param strXmlFilePath Xml⽂件路径* @param strExcleFilePath Excel⽂件存放路径* @return*/public static Boolean Xml2ExcelFile(String strXmlFilePath, String strExcleFilePath) {if(StringUtil.isTrimNull(strXmlFilePath) || StringUtil.isTrimNull(strExcleFilePath)) {return false;}List<List<String>> listList = readXml(strXmlFilePath);if(null == listList || listList.isEmpty()) {return false;}return ExcelUtil.createExcelFile(strExcleFilePath, listList);}/*** 读取Xml⽂件,以List<List<String>>形式返回* @param strFile* @return*/public static List<List<String>> readXml(String strFile) {if(StringUtil.isTrimNull(strFile)) {return null;}SAXReader reader = new SAXReader();File file = new File(strFile);if(!file.exists() || !file.isFile()) {return null;}Document document = null;document = reader.read(file);} catch (DocumentException e) {e.printStackTrace();}List<List<String>> listList = new ArrayList<>();if (null != document) {Element root = document.getRootElement();List<Element> childElements = root.elements();List<String> titleList = new ArrayList<>();listList.add(titleList);boolean flag = true;for (Element child : childElements) {List<String> list = new ArrayList<>();List<Element> elementList = child.elements();for (Element ele : elementList) {if(flag) {titleList.add(ele.getName());}list.add(ele.getText());}flag = false;listList.add(list);System.out.println();}}return listList;}}StringUtil.isTrimNull1public static boolean isTrimNull(Object obj) {2if (null != obj) {3return isNull(obj.toString().trim());4 } else {5return true;6 }7 }Excel.createExcelFile1public static <T> Boolean createExcelFile(String fileName, List<List<T>> list) {2 logger.debug(">>>>>" + CLASSNAME + ".createExcelFile()...");3 logger.debug("fileName: " + fileName);4 logger.debug("list: " + list);56 FileOutputStream fileOut = null;7try {8if(StringUtil.isTrimNull(fileName)) {9return false;10 }1112 File file = new File(fileName);13if(file.exists()) {14 System.out.println("⽂件已存在!");15 logger.debug("⽂件已存在!");16return false;17 }1819 Workbook workbook = null;20 String excelType = null;21if(FileUtil.isFileNameEndsWith(fileName, ".xls")) {22 excelType = "xls";23 workbook = new HSSFWorkbook();24 } else if(FileUtil.isFileNameEndsWith(fileName, ".xlsx")) {25 excelType = "xlsx";26 workbook = new XSSFWorkbook();27 } else {28return false;3031 fileOut = new FileOutputStream(fileName);32 workbook.write(fileOut);33 fileOut.close();3435 FileInputStream is = new FileInputStream(file);36if("xls".equals(excelType)) {37 POIFSFileSystem fs = new POIFSFileSystem(is);38 workbook = new HSSFWorkbook(fs);39 } else if("xlsx".equals(excelType)) {40 workbook = new XSSFWorkbook(is);41 }4243 Sheet sheet = workbook.createSheet();44 sheet = setSheetValue(sheet , list);4546 fileOut = new FileOutputStream(fileName);47 workbook.write(fileOut);48 } catch (Exception e) {49 e.printStackTrace();50 } finally {51if(fileOut != null) {52try {53 fileOut.close();54 } catch (IOException e) {55 e.printStackTrace();56 }57 }58 logger.debug("<<<<<" + CLASSNAME + ".createExcelFile()."); 59return true;60 }61 }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
,
引言
%&’() 作为 *+’,-.-/0 1//+’( 的 一 部 分 2 已 经 被 广 泛 应 用 于 各 行 各 业 的 数 据 统 计2办 公 电 子 表 格 文 档 处 理 等 2从 而 倍 受 世 界 广 泛 3+45-6. 用户的青睐 2 可以说已成为企业所不可缺 少 的 工 具 ! 而 7*8 作为新一代的网页发布语言 2 推动着 3(9 不断地向前飞 速发展 2 它的出现也给各行各业带来了无限商机 :;<! 7*8 最主要 的应用就是它作为数据交换的一种通 用 格 式 2 与 其 完 全 跨 平 台 的特性 2 使得在不同平台或应用程序 之 间 共 享 数 据 以 及 相 互 通 信之间建立了无缝衔接 ! 所以 2 在 3(9 应用日益发展的今天 2%&! ’() 作为企业非常 通 用 的 一 种 文 件 格 式 2 要 使 得 它 能 够 在 不 同 企 业 " 不同平台或不同应用程序之间实 现 数 据 共 享 2 将 其 转 换 为 7*8 文件格式后再进行传送或发布就显得很有必要了 ! 本文主 要介绍 %&’() 与 7*8 的相互转换 2 实现了 %&’() 与 7*8 之间相
-
图 ! 55U&). 文件数据 ;LU %&’()b7*8 转换器 此转换器主要是在发布或传送数据之前 R 将 %&’() 文件转换 为 7*8 文件格式 U 其核心程序 :X<:#<如下 N
Z&)U3-,]9--] 9--] c 3-,]9--]U[(03-,]9--]I4(6 d+)(Ie55E&).eJJY Z&)E?P((0 .P((0 c 9--]E[(0?P((0T"JY +40 ’-). c .P((0E[(0A-)VW4.TJY +40 ,-6. c .P((0E[(0f-6.TJY /-,T+ c "Y+ O ’-).Y+ggJ h ’()) c .P((0E[(0A())T+R"JY ’-).iFW(:+< c ’())E[(0A-40(40.TJY j %)(W(40 ,--0 c 4(6 %)(W(40Te成员资料 eJY K-’VW(40 5-’VW(40 c 4(6 K-’VW(40T,--0JY /-, T+ c ;Y+ O ,-6.Y+gg J h %)(W(40 9F.(%)(W(40 c 4(6 %)(W(40Te成员列表 eJY /-,TZ c "YZ O ’-).YZggJ h ’()) c .P((0U[(0A())TZR+JY %)(W(40 ()(W(40 c 4(6 %)(W(40T’-).iFW(:Z<JUF55A-40(40T’())U[(0A-40(40.TJJY %)(W(40 F55%)(W(40 c 9F.(%)(W(40UF55A-40(40T()(W(40JY j %)(W(40 0-f--0 c ,--0UF55A-40(40T9F.(%)(W(40JY j -,[UZ5-WU-V0>V0Ud-,WF0 /-,WF0 c -,[UZ5-WU-V0>V0Ud-,WF0U[(0H,(00\d-,WF0TJY -,[UZ5-WU-V0>V0Ud-,WF0 /0 c /-,WF0U.(0C45(40Te eJY 7*81V0>V00(, -V0>V0 c 4(6 7*81V0>V00(,T/0JY 1V0>V0?0,(FW -. c 4(6 d+)(1V0>V0?0,(FWT4(6 d+)(Te55U&W)eJJY -V0>V0U-V0>V0T5-’VW(40R-.JY -.U’)-.(TJY
! ^a)+9a50UZF,Y " ^a)+9a0--.UZF,Y # =%&’()GHC 的下载包解压后的 Z&)UZF, 的文件路径 Y ML =K1* 的 下 载 包 解 压 后 的 Z5-WUZF, 文 件 放 置 在 ^aZ,(a)+9a(&0 目录下 ! / 实现 从图 ; 中的部署可以看出 R 文 件 格 式 转 换 主 要 集 中 在 图 中 两 个 转 换 器 中 ! 现 以 以 下 %&’() 文 件 I55U&).L 为 例 来 说 明 转 换 程 序 ! 以下程序均在 3+45-6. !""" 平台下调试通过 ! 文件 55U&). 内容如下图所示 N
/?"Y ] ] V;F20.--X3V;F20)+Y V;F20.--X31>-N0)+Y
经 此 转 换 器 转 换 后 R 从 新 生 成 一 个 H,10> 文 件 )OO3,>N+R 其 内 容 如下图所示 U
图 C OO3,>N 文件数据 综 上 所 述 R 整 体 实 现 过 程 是 由 图 ! 的 JJ3,>N 文 件 经 H,10>Q PM@ 转换器转换生成图 9 的 JJ3,<> 文件 R 然后在 W0. 上发布或 传送 JJ3,<> 文件 R 到达接收文件的客户请求端后再经 PM@QH," 10> 转换器转换生成图 C 的 OO3,>N 文件 3 从图 9 及图 ! 与图 C 对比 可以看出 R 实现了 H,10> 与 PM@ 的相互转化 ’ ! 结束语 通过对 H,10> 与 PM@ 相互转化的研究与实现 R 熟悉了处理 H,10> 的 一 种 纯 ^5_5 %‘’)^H,10>%‘’+ 以 及 处 理 PM@ 的 ^5_5 本 地 %‘’)^ZAM+3 从 目 前 用 户 的 需 求 (H,10> 与 PM@ 的 普 及 应 用 和 它 们今后的发展优势来看 R 此种 H,10> 与 PM@ 之间相互转化的方 法对实现企业数据的共享和良好通信提供了一种可行的解决方 案 3 另外 R 此种解决方案对 MF1;-N-O2 公司下一步可能将要开发的 La& 版的 H,10> 具有一定的启发意义 3
.
经此转换器转换后 R 生成 55U&W) 文件 ! 其内容如下 N
图 M 55U&W) 文件部分内容
")8
!+3 PM@QH,10> 转换器
福
建
电
脑
!""#年第 $ 期
此 转 换 器 主 要 是 在 接 收 数 据 的 请 求 端 在 接 受 响 应 数 据 时R 将传 送 过 来 的 PM@ 文 件 )JJ3,<>+ 转 换 为 H,10> 文 件 R 以 便 于 对 文 档管理和打印等 ’ 其核心程序 SCTS#T如下 U
Excel
Excel XML
换部署图 环境配置 为了配置运行环境 R 需下载以下程序包 N ;L =KS T=F@F 开发包 R 可到 P00>NDD666U.V4U’-W 下载 R 目前推荐 版本 B;UXLY !L =K1* I 处 理 7*8 的 =F@F 本 地 GHCR 可 到 P00>NDD666UZ5-WU -,[ 下载 R目前推荐版本 B;U"LY ML =%&’()GHC I 处 理 %&’() 的 纯 =F@F GHCR 使 用 它 可 方 便 地 操 纵 %&’() 文 件 R 可 到 P00>NDD666UF45\]PF4U’-W 下 载 R 目 前 推 荐 版 本 B!U"L ! 另外 R 还需设置以下两 个 环 境 变 量 I 其 中 R^ 表 示 =KS 的 安 装 路径 L 和一个文件路径 N ;L HG_‘ 环境设置 N ^a9+4Y !L A8G??HG_‘ 环境设置 N
参考文献
!"# !&# !)# !8# !.#
李永祥 B 张德海 B 唐灿编著 $C%; 网页开发实例教程 B 清华大学出版社 B&((&B-$
D??EFGH<4AI$61@J$JK?H@KL324?$D?M4 D??EFHHNNNO-(($0<M$6AMH@KPK4AEK=QA=R1H6JHSM4 T440A??K U21?> V3=A4@ 著B 刘文红 B 赵伟明等译 ,W3P3 语言与 C%; 处理教程 B 电子工业出版社 B&(()B"", %3=R 50=<K6R 等著 B 裴剑锋B 高伟 B 徐继伟等译 ,C%; 高级编程 X 第二版 YB 机械工业出版社 B&’’&B.,