1. Basic - 37 (28)
  2. Done
Total number of elements: 37
Not yet completed: 28
High priority: 16
Completed: 9

Basic

Status Count
done 9
low 6
check 3
improve 2
medium 1
no status 16

(37)


Basic

Status Count
done 9
low 6
check 3
improve 2
medium 1
no status 16

(37)
  1. Method to update the worksheet in the archive, e.g. update(sh)
    Also allow a mechanism for the archive/workbook to maintain a pointer to all of the documents it gives out and then update them all in one go. Probably need a mutable object (reference class/environment).
  2. Implement sh[["A1"]] = value. In the code, just finish off.
  3. make sure cached strings get carried around properly.
  4. Class for cell nodes so that we can use the same subsetting idioms for these.
  5. Check for timestamp change on documents.
  6. documentation for functions
  7. create a new style
    Setting styles on cells, rows and columns. e.g. colors, fonts, indentation, ...
    Create new styles and set the cells to use these.
    Add the definitions to the getPart(, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"), i.e. xl/styles.xml.
  8. Add images to a sheet. at a location.
    The images are in xl/drawings/drawing[i].xml with Drawing ML markup. Who finds this file? It is in xl/worksheets/_rels/sheet4.xml.rels. Nothing refers to this. There is an entry for drawing1.xml in the [Content_Types].xml file just to identify its type.
    How do we map the row-column to a location on the canvas?
  9. create a pivot table.
  10. create an excel chart.
  11. When assigning to a cell in a Worksheet, update the row span if this is a new cell outside of that range.
  12. When reading a spreadsheet, recognize dates, etc.
    Dates are not given by type in Excel (in OfficeLibre) but instead by styles.
    Need to ensure that we don't collapse vectors containing dates and numbers back to numeric.
  13. When inserting a date, convert it appropriately.
  14. Put a time stamp when we read the contents of a ZipArchiveEntry so that we can check to see if it is out of date when we try to access it subsequently. This is a problem, for example, when one has an Excel file open in Excel and are working with sheet objects in R. They need to be synchronized. This is why we want to use DCOM!
  15. Write contents to cells. Done for single cell and scalar. Do vectors, and multiple cells.
  16. Extract subsets.
  17. skip = for read.xlsx
    Instead use
    sh = workbook("...")[[sheetIndex]]
    sh[ rows, cols]
    
  18. NA symbol in read.xlsx
  19. Warning in assigning to cell with update.
    library(RExcelXML)
    wb = workbook("RExcelXML/inst/SampleDocs/Workbook1.xlsx"); sh = wb[[1]]
    sh[2, 1] = 10
    
    Seems that in updateArchiveFiles, the data.frame (info) is an S4 object bu when we get to [<-data.frame, that sets the class to near the beginning and this causes the warning. Looks like there is an inconsistency in R methods and [<-data.frame.
  20. hyperlinks() method.
  21. When update a cell (via setCellValue or sh[i, j]), need to update cells which depend on this.
    We can remove the value (v node) within the cells that have a formula that depend on this cell. This is done now in the update. But it just uses contains( formula, cell-id), e.g A34 * 2 + 1 will match A3 even though it is actually A3.
    Can we mark the cells as dirty or force Excel to recalculate?
    How does the calcChain.xml file tell us which cells depend on which? It appears that the i tells us which sheet and applies to all subsequent nodes in the calcChain.xml until the next node that has an i. In other words <c r="B4" i="4"/> <c r="B3"/> <c r="B2"/> <c r="B1"/> <c r="B2" i="1"/> <c r="B3"/> <c r="B4"/> <c r="B5"/> <c r="B8"/> says that sheet 4 has formulae in B4-B1 and sheet 1 has formula in B2-B8
  22. Compute the names of the files found via relationships using relative directories. For example, getting a worksheet is ignoring the xl/ directory because the relationship is relative to xl/workbook.xml, so we are getting worksheets/worksheet1.xml rather than xl/worksheets/worksheet1.xml.
    Added relativeTo parameter in resolveRelationships().
  23. Conditional Formatting.
    Related to styles but data dependent.
  24. A class for Worksheet that allows us to specifies the row and/or column for the variable names and row names and then tools to allow us to index with these.
    In other words, can we treat the table in the excel sheet like a data frame where we provide a mapping from our row and column names to the rows and columns in excel and deal with non-contiguous ranges, etc.
  25. Tables (subgroups of cells)
  26. Add new worksheet.
    Copy an empty one. Take from Empty.xslx
    Basically done, but we want to be able to specify the name of the sheet for displaying on the tab as well as a file name for location within the archive.
  27. Pivot tables
  28. When assigning an R variable to a cell, use the name if possible to name the Excel cell.

  29. sh["A1", asNode = TRUE] should return the single node, not a list.
  30. When setting a formula, should remove the type on the attribute.
  31. support na = in the subset operators for mapping a value to NA.
  32. writing a report with formula.
    See tests/formulaSet.R for an example.
  33. sh[1,2] returns a list with one element, not just the single element.
  34. Assigning to a cell is failing now, probably related to the changes to the Rcompression package and how we zip and update the archives.
    library(RExcelXML)
    wb = workbook("RExcelXML/inst/SampleDocs/Workbook1.xlsx"); sh = wb[[1]]
    sh[2, 1] = 10
    
  35. sh[2, "A"] gives not subsettable error.
  36. Why is the Worksheet class being dropped when we access the object.
    w = excelDoc("~/Books/XMLTechnologies/Rpackages/RExcelXML/inst/templateDocs/Sample3sheets.xlsx")
    xm = getSheet(as(w, "Workbook"), 2)[[1]]
    class(xm)
    docName(xm)
    class(xm)
    
    Problem was the usual one of using an externalptr directly.
  37. getPart and relationships