Tag: scala

在Scala或Java中使用Excel语法格式化数字

有谁知道一个基于JVM的格式化库,可以处理Excel风格的数字格式? Apache POI具有DataFormatter但其API适用于处理Excel文档。 我的用例是使用Excel格式规范简单地格式化数字。

如何读取多个Excel文件并将它们连接成一个Apache Spark DataFrame?

最近我想从Spark Summit 2016开展Spark机器学习实验。培训video在这里 ,出口笔记本在这里。 实验室中使用的数据集可以从UCI Machine Learning Repository下载。 它包含来自燃气发电厂各种传感器的读数。 格式是带有五个工作表的xlsx文件。 要使用实验室中的数据,我需要读取Excel文件中的所有表单,并将它们连接成一个Spark DataFrame。 在培训期间,他们正在使用Databricks Notebook,但是我正在使用IntelliJ IDEA与Scala并在控制台中评估代码。 第一步是将所有的Excel工作表保存到名为sheet1.xlxs , sheet2.xlsx等单独的xlsx文件中,并将其放入工作sheets目录中。 如何读取所有Excel文件并将它们连接成一个Apache Spark DataFrame?

SCALA POI API。 无法访问字段inheritance

我正在写一些代码来读取一个Excel文件。 在这一点上,我正在试图确定一个单元格的types。 val wb:HSSFWorkbook= new HSSFWorkbook(fileInput) val sheet:HSSFSheet = wb.getSheetAt(0); val rows = sheet.rowIterator() while(rows.hasNext()){ var row = rows.next() val cells = row.cellIterator() while(cells.hasNext()){ val cell = cells.next() println(cell.getCellType()== org.apache.poi.hssf.usermodel.HSSFCell.CELL_TYPE_NUMERIC)}} 它说 value CELL_TYPE_NUMERIC is not a member of object org.apache.poi.hssf.usermodel.HSSFCell 我不明白为什么我不能访问这个领域。 你能帮忙吗? 问候

getOrElse默认为不同的types

有一个问题,我只是想从这个JsValue返回一个空string,而不是返回0,如果没有发现值。 基本上我想要如下: var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse("") 我这样做主要是因为我使用Apache POI来build立一个Excel工作表,并不希望零作为默认情况下,当没有任何数据。 但要使用.setCellValue(cellValue)它不能是一个Anytypes,这就是这给了我。 我试过了 var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cellValue = "" } cell.setCellValue(cellValue) 但是这给了我更改cellValue到Stringtypes的问题。 也试过这个 var cellValue = (x \ "name" \ "date").asOpt[Float].getOrElse(0) if(cellValue == 0) { cell.setCellValue("") } else cell.setCellValue(cellValue) 但这给了我一个问题,我重载方法.setCellValue与替代品。 我习惯了这个工作,因为我来自Java背景,不知道为什么会失败。 如果有一个简单的解决scheme,我仍然得到斯卡拉的吊so,请耐心等待。

欧元loginCSV文件无法在Mac Excel 2011中正确显示

我想生成的CSV文件下载scala与玩框架。 下载的CSV文件在linux上看起来很好,但是无法正确显示欧元符号。 更具体地说,€可以在Linux上正确显示,并在Mac上进行文本编辑。 但是它显示了什么时候由Excel Mac2011打开。 我做了一些研究,发现它与UTF编码有关。 但是,即使我使用utf-16,它仍然是一样的。 以下是我的代码snipet。 假设mydata:String是我需要用CSV编写的内容。 val content = mydata.getBytes("utf-16") val inputstream = new ByteArrayInputStream(content) val fileContent: Enumerator[Array[Byte]] = Enumerator.fromStream(inputstream) val fileName = "attachment; filename=myCsvTest.csv" Ok.chunked(fileContent).withHeaders(CONTENT_ENCODING -> "utf-16", CONTENT_TYPE -> "application/x-download" , CONTENT_DISPOSITION -> fileName) } 请给一些build议。 谢谢。

Spark Sql:从Excel工作表加载文件(扩展名为.xlsx)无法正确推断datetypes列的模式

我有一个xlsx文件包含date/时间(我的时间)在以下格式和示例logging – 5/16/2017 12:19:00 AM 5/16/2017 12:56:00 AM 5/16/2017 1:17:00 PM 5/16/2017 5:26:00 PM 5/16/2017 6:26:00 PM 我正在以下面的方式读取xlsx文件: val inputDF = spark.sqlContext.read.format("com.crealytics.spark.excel") .option("location","file:///C:/Users/file.xlsx") .option("useHeader","true") .option("treatEmptyValuesAsNulls","true") .option("inferSchema","true") .option("addColorColumns","false") .load() 当我尝试使用以下模式获取模式时: – inputDF.printSchema() ,我得到双。 有时,即使我得到的模式为string。 而当我打印的数据,我得到的输出为: – —————— My Time —————— 42871.014189814814 42871.03973379629 42871.553773148145 42871.72765046296 42871.76887731482 —————— 以上输出对于给定的input显然是不正确的。 而且,如果我以csv格式转换xlsx文件并读取它,我会得到正确的输出。 这是我如何阅读CSV格式的方式: – spark.sqlContext.read.format("csv") .option("header", "true") .option("inferSchema", true) .load("file:///C:/Users/file.xlsx") […]

错误 – 写入.xls文件时,“您的InputStream既不是OLE2stream,也不是OOXMLstream”

在我的Web应用程序中,我成功地使用Apache POI 3.14库和HSSF样式表将数据导出到Excel表格中。 我也写过testing用例,其中包括使用play.api.libs.iteratee.Enumerator获取写入excel的数据。 Enumerator [Array [Byte]]迭代到Assert正在写入正确的数据。 同样的代码片段在下面 – val enumerator: Enumerator[Array[Byte]] = excelGenerator.toExcel (List (“Id”, “Name”), List (Row (List (“ 123 ", “Sina”)), Row(List(“345", “ Dalfa ”) ) ) ) val enumeratorRows = enumerator.map ( e => { val myWorkBook = WorkbookFactory.create (new ByteArrayInputStream (e) ) val mySheet = myWorkBook.getSheetAt (0) for (i <- […]

Scala:根据不同的模板方法/模式读取一个excel文件并创build输出

一方面,我在Scala中编写了一个读取Excel文件的函数。 另一方面,我有不同的报告格式:第一个报告会输出一定的信息,第二个报告会根据定义的规则将几个信元相加。 我很难模拟这些对象如何相互作用。 我现在所做的是,ExcelReader将采取两个参数:一个文件input(文件stream)和一个报告特质。 我正在考虑注入报告类,并在Excel Reader中使用commmon trait createReport。 这是一个很好的做法吗? 我的另一个问题是我应该传递给这个createReport方法的对象。 通过List是否更好? 数组? 我不太确定哪一个是build立excel表格的最佳对象,或者是否最好创build我自己的对象。 谢谢 问候

打印Excel文件的单元格值

我正尝试在Apache POI DSL上使用自定义DSL加载和读取Excel文件。 我想提供Excel支持火花和我使用Apache POI的目的。 我在Scala中find了上面的DSL存储库。 我正试图find一种方法来读取单元格并使用Scala来打印它们。 object XlsLoader{ def f1(): Unit ={ val path = "/Users/shashi/data311.xlsx" val res = Workbook(path) val res1 = res.getOrElse(null) println(res1) println("one") val q = res1.map { x => println("hello") println(x) println("sheetmap — "+x.sheetMap) println("flatten — "+x.sheetMap.toList) println("keys — "+x.sheetMap.keys.toList) println("1he") x.sheetMap.keys.toList.foreach(n => println(n)) println("2he") println("toString — "+x.toString()) } println("two") […]

如何在Scala中重新创buildExcel的Longtypesdatetypes转换

我做了一个特殊的粘贴date列作为Excel中的值。 我想把结果长的值转换回spark的date(使用scala api)。 Example: converting 41088.96389 to date in excel results in 6/29/16 23:08 same when did through cast(DataTypes.TimestampType) in spark, it gives 01 Jan 1970 11:24:48 GMT 任何链接到Excel如何处理长types时转换date将不胜感激。