# Data Matrix

DsExcel supports Data Matrix Barcode which is mainly used to mark small items. Learn more in DsExcel docs.

## Content

DataMatrix barcode is a high density, two-dimensional barcode with square modules typically arranged in a square or a rectangular matrix pattern. The most popular application of Data Matrix is to tag small objects, because the code can encode 50 characters in 2 or 3 mm 2 readable symbols and can only read the code ata 20% ratio.
The below image displays DataMatrix barcode in a PDF document.
![Datamatrix barcode](https://cdn.mescius.io/document-site-files/images/dd59ea42-cd61-4fa6-a018-6231c2a9c598/images/datamatrix.png)

## Formula definition

You can set Datamatrix in a worksheet using the following formula:
=BC\_DataMatrix(value, color, backgroudColor, eccMode, ecc200SymbolSize, ecc200EndcodingMode, ecc00\_140Symbole, structureAppend, structureNumber, fileIdentifier, quietZoneRight, quietZoneTop, quietZoneBottom)

## Parameter

| Name | Description |
| ---- | ----------- |
| value | A string that represents encode on the symbol of QRCode. |
| color | A color that represents the barcode color. The default value is 'rgb(0,0,0)'. |
| backgroundColor | A color that represents the barcode backgroundcolor. The default value is 'rgb(255, 255, 255)' |
| eccMode | A value that represents which ecc mode to use. It has the following values : 'ECC000, ECC050, ECC080, ECC100, ECC140, ECC200'. |
| ecc200SymbolSize | A value that specifies the size of the ECC200 symbol only. The default value is 'squareAuto'. |
| ecc200EndcodingMode | A value that specifies which encoding mode to use for the symbol. The default value is 'auto'. |
| ecc00\_140Symbole | A value that specifies the size of the ECC000-140 symbol only. The default value is 'auto'. |
| structureAppend | Specifies whether the symbol is part of a structured append message ECC200 only.The default value is 'false'. |
| structureNumber | A value that represents which block the symbol is in the structured append message. It has the value '0-15', only for ECC200. The default value is '0'. |
| fileIdentifier | A value that specifies the file identification. It has values '1-254', only for ECC200. The default value is '0'. |
| quietZoneRight | A value that represents the size of right quiet zone. |
| quietZoneTop | A value that represents the size of top quiet zone. |
| quietZoneBottom | A value that represents the size of bottom quiet zone. |

## Using Code

This example creates a DataMatrix barcode.

```Java
// Create a new workbook
Workbook workbook = new Workbook();
// Set worksheet layout and data
IWorksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getRange("B:F").setColumnWidth(15);
worksheet.getRange("4:7").setRowHeight(60);
worksheet.getRange("A:A").setColumnWidth(5);
worksheet.getRange("B2").setValue("Data Matrix");
worksheet.getRange("B2:F2").setMergeCells(true);
worksheet.getRange("B3:F3").setValue(new Object[][] { { "Server", "Data", "Default", "ECC100", "ECC200" } });
worksheet.getRange("B4:C7").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("B4:C7").setVerticalAlignment(VerticalAlignment.Center);
worksheet.getRange("B2:F3").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("B2:F3").setVerticalAlignment(VerticalAlignment.Center);
worksheet.getRange("B4:C7")
        .setValue(new Object[][] { { "Police", "911" }, { "Telephone Directory Assistance", "411" },
                { "Non-emergency Municipal Services", "311" }, { "Travel Info Call 511", "511" } });
worksheet.getRange("B4:B7").setWrapText(true);
worksheet.getPageSetup().setPrintGridlines(true);
// Set formula
for (int i = 4; i < 8; i++) {
    String value = "CONCAT(B" + i + ",\":\",C" + i + ")";
    worksheet.getRange("D" + i).setFormula("=BC_DataMatrix" + "(" + value + ")");
    worksheet.getRange("E" + i).setFormula("=BC_DataMatrix" + "(" + value + ", , ,\"ECC000\")");
    worksheet.getRange("F" + i).setFormula("=BC_DataMatrix" + "(" + value + ", , ,\"ECC200\")");
}

// Save to an pdf file
workbook.save("DataMatrix.pdf");
```

**Limitation**

* Datamatrix ECC (000-140) barcodes are obsolete. Hence, barcode generation with these specifications is not scanned.