Include InlineCss

This commit is contained in:
oleibman
2024-12-01 17:27:00 -08:00
parent 3d6f71f6ad
commit 6a4c2c68c4
2 changed files with 55 additions and 12 deletions
+12 -12
View File
@@ -1410,18 +1410,18 @@ class Html extends BaseWriter
$cellData = nl2br($cellData);
// Extend CSS class?
if (!$this->useInlineCss && is_string($cssClass)) {
$dataType = $cell->getDataType();
if ($this->betterBoolean && $this->preCalculateFormulas && $dataType === DataType::TYPE_FORMULA) {
$calculatedValue = $cell->getCalculatedValue();
if (is_bool($calculatedValue)) {
$dataType = DataType::TYPE_BOOL;
} elseif (is_numeric($calculatedValue)) {
$dataType = DataType::TYPE_NUMERIC;
} elseif (is_string($calculatedValue)) {
$dataType = DataType::TYPE_STRING;
}
$dataType = $cell->getDataType();
if ($this->betterBoolean && $this->preCalculateFormulas && $dataType === DataType::TYPE_FORMULA) {
$calculatedValue = $cell->getCalculatedValue();
if (is_bool($calculatedValue)) {
$dataType = DataType::TYPE_BOOL;
} elseif (is_numeric($calculatedValue)) {
$dataType = DataType::TYPE_NUMERIC;
} elseif (is_string($calculatedValue)) {
$dataType = DataType::TYPE_STRING;
}
}
if (!$this->useInlineCss && is_string($cssClass)) {
$cssClass .= ' style' . $cell->getXfIndex();
$cssClass .= ' ' . $dataType;
} elseif (is_array($cssClass)) {
@@ -1437,7 +1437,7 @@ class Html extends BaseWriter
$sharedStyle->getAlignment()->getHorizontal() == Alignment::HORIZONTAL_GENERAL
&& isset($this->cssStyles['.' . $cell->getDataType()]['text-align'])
) {
$cssClass['text-align'] = $this->cssStyles['.' . $cell->getDataType()]['text-align'];
$cssClass['text-align'] = $this->cssStyles['.' . $dataType]['text-align'];
}
}
} else {
@@ -141,6 +141,49 @@ class BetterBooleanTest extends Functional\AbstractFunctional
$reloaded->disconnectWorksheets();
}
public function testInline(): void
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->getCell('A1')->setValue(1);
$sheet->getCell('B1')->setValue('Hello');
$sheet->getCell('C1')->setValue(true);
$sheet->getCell('D1')->setValue('=IF(1>2, TRUE, FALSE)');
$sheet->getCell('E1')->setValueExplicit(1, DataType::TYPE_STRING);
$sheet->getCell('F1')->setValue('="A"&"B"');
$sheet->getCell('G1')->setValue('=1+2');
$calc = Calculation::getInstance();
$calc->setLocale('fr');
$writer = new HtmlWriter($spreadsheet);
$writer->setBetterBoolean(true);
$writer->setUseInlineCss(true);
$html = $writer->generateHtmlAll();
$html = str_replace('vertical-align:bottom; color:#000000; font-family:\'Calibri\'; font-size:11pt; ', '', $html);
$html = str_replace(' width:42pt" class="gridlines gridlinesp"', '"', $html);
self::assertStringNotContainsString('TRUE', $html);
self::assertStringContainsString('<td style="text-align:right;">1</td>', $html);
self::assertStringContainsString('<td style="text-align:left;">Hello</td>', $html);
self::assertStringContainsString('<td data-type="b" style="text-align:center;">VRAI</td>', $html);
self::assertStringContainsString('<td data-type="b" style="text-align:center;">FAUX</td>', $html);
self::assertStringContainsString('<td style="text-align:left;">AB</td>', $html);
self::assertStringContainsString('<td style="text-align:right;">3</td>', $html);
/** @var callable */
$callableWriter = [$this, 'setBetter'];
$reloaded = $this->writeAndReload($spreadsheet, 'Html', null, $callableWriter);
$spreadsheet->disconnectWorksheets();
$rsheet = $reloaded->getActiveSheet();
self::assertSame(1, $rsheet->getCell('A1')->getValue());
self::assertSame('Hello', $rsheet->getCell('B1')->getValue());
self::assertTrue($rsheet->getCell('C1')->getValue());
self::assertFalse($rsheet->getCell('D1')->getValue());
self::assertSame('1', $rsheet->getCell('E1')->getValue());
self::assertSame('AB', $rsheet->getCell('F1')->getValue());
self::assertSame(3, $rsheet->getCell('G1')->getValue());
$reloaded->disconnectWorksheets();
}
public function testForeignNoLocale(): void
{
$fragment = '<table><tbody><tr>'