如何使用java从excel表提取内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用java从excel表提取内容相关的知识,希望对你有一定的参考价值。

参考技术A 以下是使用java从excel表提取内容的程序 -
import java.io.File;import java.io.FileInputStream;import org.apache.tika.metadata.Metadata;import org.apache.tika.parser.ParseContext;import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;import org.apache.tika.sax.BodyContentHandler;public class ExtractContentFromExcel
public static void main(String args[]) throws Exception

// detecting the file type
BodyContentHandler handler = new BodyContentHandler();

Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("excelExample.xlsx"));

ParseContext pcontext = new ParseContext();

// OOXml parser
OOXMLParser msofficeparser = new OOXMLParser();

msofficeparser.parse(inputstream, handler, metadata, pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();

for (String name : metadataNames)
System.out.println(name + ": " + metadata.get(name));

Java

原ODF文件:excelExample.xlsx 的内容如下 -

执行上面示例代码,得到以下结果 -
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/F:/worksp/javaexamples/libs/tika_libs/tika-app-1.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/F:/worksp/javaexamples/libs/tika_libs/tika-server-1.16.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
九月 27, 2017 5:15:47 上午 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: JBIG2ImageReader not loaded. jbig2 files will be ignored
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
TIFFImageWriter not loaded. tiff files will not be processed
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
J2KImageReader not loaded. JPEG2000 files will not be processed.
See http://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.

九月 27, 2017 5:15:47 上午 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: org.xerial's sqlite-jdbc is not loaded.
Please provide the jar on your classpath to parse sqlite files.
See tika-parsers/pom.xml for the correct version.
Contents of the document:Sheet1
编号 姓名 年龄 工作
1001 王传大 22 Java软件开发
1002 李小双 29 项目经理
1020 张在传 28 人事经理

Sheet2

Sheet3

Metadata of the document:
date: 2017-09-27T09:15:38Z
meta:creation-date: 2017-09-27T09:13:50Z
extended-properties:Application: Microsoft Excel
Creation-Date: 2017-09-27T09:13:50Z
dcterms:created: 2017-09-27T09:13:50Z
Last-Modified: 2017-09-27T09:15:38Z
dcterms:modified: 2017-09-27T09:15:38Z
Last-Save-Date: 2017-09-27T09:15:38Z
protected: false
meta:save-date: 2017-09-27T09:15:38Z
Application-Name: Microsoft Excel
modified: 2017-09-27T09:15:38Z
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
custom:KSOProductBuildVer: 2052-10.1.0.6489Shell

易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
参考技术B POI解析Excel

如何使用 bash 脚本从许多 excel/Libre Office Calc 表中提取数据?

【中文标题】如何使用 bash 脚本从许多 excel/Libre Office Calc 表中提取数据?【英文标题】:How to extract data with bash script from many excel/Libre Office Calc sheets? 【发布时间】:2019-08-05 09:59:40 【问题描述】:

我有一个关于 execl 和/或 LibreOffice Calc 的问题。

我们可以根据需要在 excel 和 LibreOffice Calc 上创建许多工作表:

在 sheet1 上,我有 2 列:

Column 1      Column2
Monday        Monday
Tuesday       Tuesday
Wednesday     Wednesday
Thursday      Thursday
Friday        Friday
Saturday      Saturday
Sunday        Sunday

如果我想提取第一列以将它们重定向到 csv 文件,我可以这样做:

cat excel_file | awk -F',' 'print $1' > my_csv.csv

但是,我在表 2 中有:

Column 1      Column2
banana        banana
apple         apple
orange        orange
lemon         lemon
cherry        cherry
strawberry    strawberry
melon         melon

有可能使用 bash/awk 脚本/命令提取:sheet1 中的第一列和 sheet2 中的第二列?

最后,csv 看起来像:

Column 1      Column2
Monday        banana
Tuesday       apple
Wednesday     orange
Thursday      lemon
Friday        cherry
Saturday      strawberry
Sunday        melon

这个想法是能够使用 bash 或 awk 一次在不同的工作表中提取我需要的列...

你有什么想法吗?

【问题讨论】:

另一种方法是在 Excel 中编写一个宏以将您想要的数据准确提取到另一个页面(但这将只是 M/S),或者编写另一个页面来整理您想要的数据并将该页面导出为 CSV? 您是说可以使用cat | awk.xls.xlsx.sxc 文件中提取数据吗?我发现这种说法令人惊讶,因为 Excel 和 Calc 文件不是纯文本格式。 【参考方案1】:

您只能将“当前工作表”保存为 csv,因此您必须将每个工作表保存为单独的文件。

然后在 unix 中,您可以使用 paste 将两个文件按列连接在一起。

【讨论】:

您好!我知道这种方式,但是如果我有 20 张纸,那就很复杂了。非常浪费时间,这就是为什么我问是否可以使用 Bash/awk 脚本 但是您的第一个问题是如何将文件取出。 CSV 不会完成这项工作。如果您想使用 CSV 以外的其他内容,请更改您的问题以明确说明?

以上是关于如何使用java从excel表提取内容的主要内容,如果未能解决你的问题,请参考以下文章

如何从Java中提取PDF文件中的表格数据

如何使用ruby中的电子表格gem从excel单元格中提取超链接地址?

怎样根据姓名匹配对应数据,Excel如何从一个表中分类提取另一个表对应

excel如何提取所需关键字所在行?

怎样从excel表格中提取部分内容

如何从一个工作表内的多个提取数据记录到另一个工作表中,并在数据后面加一个分隔标记。