我的老板习惯于对我们的数据库执行查询,该查询返回数万行并将其保存到excel文件中。作为实习生,我经常不得不编写脚本来处理这些文件中的信息。到目前为止,我已经为满足脚本需求尝试了VBScript和Powershell。这两个过程都可能需要几分钟才能执行,即使是最简单的任务,这也意味着该脚本完成后将需要8小时的大部分时间。
我现在的解决方法是编写一个PowerShell脚本,该脚本从xlsx文件中删除所有逗号和换行符,将.xlsx文件保存到.csv,然后让Java程序处理数据收集和输出,并让我脚本完成后清理.csv文件。对于我当前的项目,此过程只需几秒钟,但是我不禁怀疑下一个项目是否还有更优雅的选择。有什么建议?
使用.xlsx文件时,我不断收到各种奇怪的错误。
这是一个使用Apache POI遍历.xlsx
文件的简单示例。另请参阅 升级到POI
3.5,包括将现有的HSSF用户模型代码转换为SS用户模型(对于XSSF和HSSF)
。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class XlsxReader {
public static void main(String[] args) throws IOException {
InputStream myxls = new FileInputStream("test.xlsx");
Workbook book = new XSSFWorkbook(myxls);
FormulaEvaluator eval =
book.getCreationHelper().createFormulaEvaluator();
Sheet sheet = book.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
printCell(cell, eval);
System.out.print("; ");
}
System.out.println();
}
myxls.close();
}
private static void printCell(Cell cell, FormulaEvaluator eval) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BLANK:
System.out.print("EMPTY");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
System.out.print(cell.getDateCellValue());
} else {
System.out.print(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.print(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.print(cell.getCellFormula());
break;
default:
System.out.print("DEFAULT");
}
}
}
问题内容: 我正在尝试使用gson库(http://code.google.com/p/google-解析一些巨大的JSON文件(例如http://eu.battle.net/auction- data/258993a3c6b974ef3e6f22ea6f822720/auctions.json )JAVA中的gson / )。 我想知道解析这种大文件(约80k行)的最佳方法是什么,以及您是否知道
问题内容: 我需要解析大小为40GB的XML文件,然后进行规范化,然后插入到MySQL数据库中。我尚不清楚需要在数据库中存储多少文件,我也不知道XML结构。 我应该使用哪个解析器,您将如何进行呢? 问题答案: 在PHP中,您可以使用 Docs 读取超大型XML文件: 特大XML文件应以压缩格式存储在磁盘上。至少这是有道理的,因为XML文件具有很高的压缩率。例如,像gzip一样。 PHP 通过压缩包
问题内容: 我想为php网站使用bbcode过滤器。(我正在使用cakephp,它将是一个bbcode助手)我有一些要求。 Bbcode可以嵌套。 所以类似的东西是有效的。 Bbcode可以具有0个或多个参数。 范例: Bbcode可能具有多种行为。 可以说,将转换为 或视频bbcode可以在youtube,dailymotion …之间进行选择。 我认为它可以满足我的大部分需求。我用正则表达式做
问题内容: 我需要一个XML解析器来解析大约1.8 GB的文件。 因此,解析器不应将所有文件加载到内存中。 有什么建议? 问题答案: 除了推荐的SAX解析之外,您还可以使用JDK(包javax.xml.stream)中包含的StAX API(一种SAX演进)。 StAX项目主页:http://stax.codehaus.org/Home 简介:http : //www.xml.com/pub/a/
问题内容: 我正在尝试将DMOZ内容/结构XML文件解析为MySQL,但是所有现有的脚本都已经很老了并且不能很好地工作。如何在PHP中打开大型(+ 1GB)XML文件进行解析? 问题答案: 只有两个php API真正适合处理大文件。第一个是旧的expatapi,第二个是较新的XMLreader函数。这些api读取连续流,而不是将整个树加载到内存中(这是simplexml和DOM所做的)。 例如,您
我有一个文件,它以JSON形式存储了许多JavaScript对象,我需要读取该文件,创建每个对象,并对它们做一些事情(在我的例子中,将它们插入数据库)。JavaScript对象可以用一种格式表示: 格式A: 或格式B: 请注意,