@jjlmoya/utils-developer 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +64 -0
- package/src/category/i18n/en.ts +34 -0
- package/src/category/i18n/es.ts +34 -0
- package/src/category/i18n/fr.ts +34 -0
- package/src/category/index.ts +31 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +11 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +78 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +146 -0
- package/src/pages/[locale].astro +251 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/css_specificity_logic.test.ts +39 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/aspectRatio/bibliography.astro +14 -0
- package/src/tool/aspectRatio/component.astro +468 -0
- package/src/tool/aspectRatio/i18n/en.ts +177 -0
- package/src/tool/aspectRatio/i18n/es.ts +177 -0
- package/src/tool/aspectRatio/i18n/fr.ts +177 -0
- package/src/tool/aspectRatio/index.ts +34 -0
- package/src/tool/aspectRatio/seo.astro +14 -0
- package/src/tool/aspectRatio/ui.ts +12 -0
- package/src/tool/calculadoraTiempoDatos/bibliography.astro +14 -0
- package/src/tool/calculadoraTiempoDatos/component.astro +829 -0
- package/src/tool/calculadoraTiempoDatos/i18n/en.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/i18n/es.ts +163 -0
- package/src/tool/calculadoraTiempoDatos/i18n/fr.ts +150 -0
- package/src/tool/calculadoraTiempoDatos/index.ts +33 -0
- package/src/tool/calculadoraTiempoDatos/seo.astro +14 -0
- package/src/tool/calculadoraTiempoDatos/ui.ts +24 -0
- package/src/tool/colorConverter/bibliography.astro +14 -0
- package/src/tool/colorConverter/component.astro +504 -0
- package/src/tool/colorConverter/i18n/en.ts +126 -0
- package/src/tool/colorConverter/i18n/es.ts +126 -0
- package/src/tool/colorConverter/i18n/fr.ts +126 -0
- package/src/tool/colorConverter/index.ts +33 -0
- package/src/tool/colorConverter/seo.astro +14 -0
- package/src/tool/colorConverter/ui.ts +16 -0
- package/src/tool/conversorExcelCsvHtml/bibliography.astro +14 -0
- package/src/tool/conversorExcelCsvHtml/component.astro +595 -0
- package/src/tool/conversorExcelCsvHtml/i18n/en.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/es.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/i18n/fr.ts +129 -0
- package/src/tool/conversorExcelCsvHtml/index.ts +33 -0
- package/src/tool/conversorExcelCsvHtml/seo.astro +14 -0
- package/src/tool/conversorExcelCsvHtml/ui.ts +14 -0
- package/src/tool/cronGenerator/bibliography.astro +14 -0
- package/src/tool/cronGenerator/component.astro +667 -0
- package/src/tool/cronGenerator/i18n/en.ts +191 -0
- package/src/tool/cronGenerator/i18n/es.ts +191 -0
- package/src/tool/cronGenerator/i18n/fr.ts +191 -0
- package/src/tool/cronGenerator/index.ts +34 -0
- package/src/tool/cronGenerator/seo.astro +14 -0
- package/src/tool/cronGenerator/ui.ts +45 -0
- package/src/tool/cssSpecificityCalculator/bibliography.astro +14 -0
- package/src/tool/cssSpecificityCalculator/component.astro +292 -0
- package/src/tool/cssSpecificityCalculator/i18n/en.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/es.ts +168 -0
- package/src/tool/cssSpecificityCalculator/i18n/fr.ts +168 -0
- package/src/tool/cssSpecificityCalculator/index.ts +34 -0
- package/src/tool/cssSpecificityCalculator/logic.ts +100 -0
- package/src/tool/cssSpecificityCalculator/seo.astro +14 -0
- package/src/tool/cssSpecificityCalculator/ui-controller.ts +57 -0
- package/src/tool/cssSpecificityCalculator/ui.ts +11 -0
- package/src/tool/cssToInlineConverter/bibliography.astro +14 -0
- package/src/tool/cssToInlineConverter/component.astro +308 -0
- package/src/tool/cssToInlineConverter/i18n/en.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/es.ts +160 -0
- package/src/tool/cssToInlineConverter/i18n/fr.ts +160 -0
- package/src/tool/cssToInlineConverter/index.ts +34 -0
- package/src/tool/cssToInlineConverter/seo.astro +14 -0
- package/src/tool/cssToInlineConverter/ui.ts +12 -0
- package/src/tool/duplicateCssRemover/bibliography.astro +14 -0
- package/src/tool/duplicateCssRemover/component.astro +353 -0
- package/src/tool/duplicateCssRemover/i18n/en.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/es.ts +167 -0
- package/src/tool/duplicateCssRemover/i18n/fr.ts +167 -0
- package/src/tool/duplicateCssRemover/index.ts +34 -0
- package/src/tool/duplicateCssRemover/seo.astro +14 -0
- package/src/tool/duplicateCssRemover/ui.ts +12 -0
- package/src/tool/generadorSecurityTxt/bibliography.astro +14 -0
- package/src/tool/generadorSecurityTxt/component.astro +473 -0
- package/src/tool/generadorSecurityTxt/i18n/en.ts +173 -0
- package/src/tool/generadorSecurityTxt/i18n/es.ts +173 -0
- package/src/tool/generadorSecurityTxt/i18n/fr.ts +173 -0
- package/src/tool/generadorSecurityTxt/index.ts +33 -0
- package/src/tool/generadorSecurityTxt/seo.astro +14 -0
- package/src/tool/generadorSecurityTxt/ui.ts +27 -0
- package/src/tool/hashGenerator/bibliography.astro +14 -0
- package/src/tool/hashGenerator/component.astro +367 -0
- package/src/tool/hashGenerator/i18n/en.ts +118 -0
- package/src/tool/hashGenerator/i18n/es.ts +118 -0
- package/src/tool/hashGenerator/i18n/fr.ts +118 -0
- package/src/tool/hashGenerator/index.ts +33 -0
- package/src/tool/hashGenerator/md5.ts +138 -0
- package/src/tool/hashGenerator/seo.astro +14 -0
- package/src/tool/hashGenerator/ui.ts +11 -0
- package/src/tool/inspectorCertificadosSsl/bibliography.astro +14 -0
- package/src/tool/inspectorCertificadosSsl/component.astro +580 -0
- package/src/tool/inspectorCertificadosSsl/i18n/en.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/es.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/i18n/fr.ts +214 -0
- package/src/tool/inspectorCertificadosSsl/index.ts +33 -0
- package/src/tool/inspectorCertificadosSsl/seo.astro +14 -0
- package/src/tool/inspectorCertificadosSsl/ui.ts +29 -0
- package/src/tool/jsonFormatter/bibliography.astro +14 -0
- package/src/tool/jsonFormatter/component.astro +590 -0
- package/src/tool/jsonFormatter/i18n/en.ts +156 -0
- package/src/tool/jsonFormatter/i18n/es.ts +156 -0
- package/src/tool/jsonFormatter/i18n/fr.ts +156 -0
- package/src/tool/jsonFormatter/index.ts +34 -0
- package/src/tool/jsonFormatter/seo.astro +14 -0
- package/src/tool/jsonFormatter/ui.ts +15 -0
- package/src/tool/keycode/bibliography.astro +14 -0
- package/src/tool/keycode/component.astro +540 -0
- package/src/tool/keycode/i18n/en.ts +160 -0
- package/src/tool/keycode/i18n/es.ts +160 -0
- package/src/tool/keycode/i18n/fr.ts +160 -0
- package/src/tool/keycode/index.ts +34 -0
- package/src/tool/keycode/seo.astro +14 -0
- package/src/tool/keycode/ui.ts +10 -0
- package/src/tool/llmCostCalculator/bibliography.astro +14 -0
- package/src/tool/llmCostCalculator/component.astro +488 -0
- package/src/tool/llmCostCalculator/data.ts +99 -0
- package/src/tool/llmCostCalculator/i18n/en.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/es.ts +165 -0
- package/src/tool/llmCostCalculator/i18n/fr.ts +165 -0
- package/src/tool/llmCostCalculator/index.ts +34 -0
- package/src/tool/llmCostCalculator/seo.astro +14 -0
- package/src/tool/llmCostCalculator/ui.ts +11 -0
- package/src/tool/mobileMockupGenerator/app.ts +614 -0
- package/src/tool/mobileMockupGenerator/bibliography.astro +14 -0
- package/src/tool/mobileMockupGenerator/component.astro +1044 -0
- package/src/tool/mobileMockupGenerator/constants.ts +48 -0
- package/src/tool/mobileMockupGenerator/i18n/en.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/es.ts +121 -0
- package/src/tool/mobileMockupGenerator/i18n/fr.ts +121 -0
- package/src/tool/mobileMockupGenerator/index.ts +33 -0
- package/src/tool/mobileMockupGenerator/rendering.ts +189 -0
- package/src/tool/mobileMockupGenerator/seo.astro +14 -0
- package/src/tool/mobileMockupGenerator/store.ts +145 -0
- package/src/tool/mobileMockupGenerator/types.ts +41 -0
- package/src/tool/mobileMockupGenerator/ui.ts +48 -0
- package/src/tool/musicalTypography/bibliography.astro +14 -0
- package/src/tool/musicalTypography/component.astro +480 -0
- package/src/tool/musicalTypography/i18n/en.ts +179 -0
- package/src/tool/musicalTypography/i18n/es.ts +179 -0
- package/src/tool/musicalTypography/i18n/fr.ts +179 -0
- package/src/tool/musicalTypography/index.ts +33 -0
- package/src/tool/musicalTypography/seo.astro +14 -0
- package/src/tool/musicalTypography/ui.ts +25 -0
- package/src/tool/placeholderGenerator/bibliography.astro +14 -0
- package/src/tool/placeholderGenerator/component.astro +499 -0
- package/src/tool/placeholderGenerator/i18n/en.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/es.ts +176 -0
- package/src/tool/placeholderGenerator/i18n/fr.ts +176 -0
- package/src/tool/placeholderGenerator/index.ts +34 -0
- package/src/tool/placeholderGenerator/seo.astro +14 -0
- package/src/tool/placeholderGenerator/ui.ts +14 -0
- package/src/tool/promptLibrary/bibliography.astro +14 -0
- package/src/tool/promptLibrary/component.astro +1131 -0
- package/src/tool/promptLibrary/controller.ts +49 -0
- package/src/tool/promptLibrary/i18n/en.ts +131 -0
- package/src/tool/promptLibrary/i18n/es.ts +131 -0
- package/src/tool/promptLibrary/i18n/fr.ts +126 -0
- package/src/tool/promptLibrary/index.ts +33 -0
- package/src/tool/promptLibrary/seo.astro +14 -0
- package/src/tool/promptLibrary/ui.ts +29 -0
- package/src/tool/readabilityCalculator/bibliography.astro +14 -0
- package/src/tool/readabilityCalculator/component.astro +534 -0
- package/src/tool/readabilityCalculator/i18n/en.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/es.ts +133 -0
- package/src/tool/readabilityCalculator/i18n/fr.ts +133 -0
- package/src/tool/readabilityCalculator/index.ts +33 -0
- package/src/tool/readabilityCalculator/seo.astro +14 -0
- package/src/tool/readabilityCalculator/ui.ts +27 -0
- package/src/tool/svgSanitizer/bibliography.astro +14 -0
- package/src/tool/svgSanitizer/component.astro +554 -0
- package/src/tool/svgSanitizer/i18n/en.ts +125 -0
- package/src/tool/svgSanitizer/i18n/es.ts +125 -0
- package/src/tool/svgSanitizer/i18n/fr.ts +125 -0
- package/src/tool/svgSanitizer/index.ts +33 -0
- package/src/tool/svgSanitizer/seo.astro +14 -0
- package/src/tool/svgSanitizer/ui.ts +18 -0
- package/src/tool/svgToCss/bibliography.astro +14 -0
- package/src/tool/svgToCss/component.astro +381 -0
- package/src/tool/svgToCss/i18n/en.ts +174 -0
- package/src/tool/svgToCss/i18n/es.ts +174 -0
- package/src/tool/svgToCss/i18n/fr.ts +174 -0
- package/src/tool/svgToCss/index.ts +34 -0
- package/src/tool/svgToCss/seo.astro +14 -0
- package/src/tool/svgToCss/ui.ts +13 -0
- package/src/tool/urlCleaner/bibliography.astro +14 -0
- package/src/tool/urlCleaner/component.astro +458 -0
- package/src/tool/urlCleaner/i18n/en.ts +116 -0
- package/src/tool/urlCleaner/i18n/es.ts +116 -0
- package/src/tool/urlCleaner/i18n/fr.ts +116 -0
- package/src/tool/urlCleaner/index.ts +33 -0
- package/src/tool/urlCleaner/seo.astro +14 -0
- package/src/tool/urlCleaner/ui.ts +12 -0
- package/src/tool/urlEncoderDecoder/bibliography.astro +14 -0
- package/src/tool/urlEncoderDecoder/component.astro +291 -0
- package/src/tool/urlEncoderDecoder/i18n/en.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/es.ts +162 -0
- package/src/tool/urlEncoderDecoder/i18n/fr.ts +162 -0
- package/src/tool/urlEncoderDecoder/index.ts +34 -0
- package/src/tool/urlEncoderDecoder/seo.astro +14 -0
- package/src/tool/urlEncoderDecoder/ui.ts +11 -0
- package/src/tool/utmGenerator/bibliography.astro +14 -0
- package/src/tool/utmGenerator/component.astro +270 -0
- package/src/tool/utmGenerator/i18n/en.ts +117 -0
- package/src/tool/utmGenerator/i18n/es.ts +117 -0
- package/src/tool/utmGenerator/i18n/fr.ts +117 -0
- package/src/tool/utmGenerator/index.ts +33 -0
- package/src/tool/utmGenerator/seo.astro +14 -0
- package/src/tool/utmGenerator/ui.ts +13 -0
- package/src/tools.ts +27 -0
- package/src/types.ts +72 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ConversorExcelCsvHtmlUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'excel-csv-html-table-converter';
|
|
6
|
+
const title = 'Excel and CSV to HTML Table Converter Code Generator';
|
|
7
|
+
const description = 'Convert your Excel or CSV data to clean, semantic HTML tables instantly. Free tool for developers and content creators.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'How do I convert an Excel file (.xlsx) to HTML?',
|
|
12
|
+
answer: 'First, open your file in Excel and save it as CSV (comma-delimited). Then, upload that CSV file to our tool or paste its content to get the HTML table code.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Does the generated code include CSS styles?',
|
|
16
|
+
answer: 'The generator produces clean HTML with optional classes for borders and zebra stripes. Final visual styles depend on your website\'s own CSS, ensuring perfect integration.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Can I upload very large CSV files?',
|
|
20
|
+
answer: 'Yes, our tool processes data locally in your browser. This means it\'s very fast and secure, as your data never travels over the internet.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Is it compatible with Google Sheets?',
|
|
24
|
+
answer: 'Absolutely. In Google Sheets, go to File > Download > Comma separated values (.csv) and use that file with our tool.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Prepare your data',
|
|
31
|
+
text: 'Have your Excel or CSV file ready. Make sure the data is clean.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Load the data',
|
|
35
|
+
text: 'Paste the CSV text in the input area or drag the file directly to the converter.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Configure the table',
|
|
39
|
+
text: 'Choose whether you want to use the first row as a header and if you want basic styles.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Copy the code',
|
|
43
|
+
text: 'Switch to the "HTML Code" tab and copy the result to paste on your website.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'All',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
73
|
+
inLanguage: 'en',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const ui: ConversorExcelCsvHtmlUI = {
|
|
77
|
+
csvInputLabel: 'Paste your CSV here',
|
|
78
|
+
csvInputPlaceholder: 'Name,Age,City\nJohn,25,Madrid\nAna,30,Barcelona',
|
|
79
|
+
uploadLabel: 'Or upload your file (CSV)',
|
|
80
|
+
dragDropLabel: 'Drag and drop your file here',
|
|
81
|
+
headerCheckboxLabel: 'Use first row as header',
|
|
82
|
+
bordersCheckboxLabel: 'Add borders',
|
|
83
|
+
stripeCheckboxLabel: 'Zebra stripes',
|
|
84
|
+
previewTabLabel: 'Preview',
|
|
85
|
+
codeTabLabel: 'HTML Code',
|
|
86
|
+
emptyStateLabel: 'Enter data to see the table',
|
|
87
|
+
copyButtonLabel: 'Copy Code',
|
|
88
|
+
copiedLabel: 'Copied!',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
|
|
92
|
+
slug,
|
|
93
|
+
title,
|
|
94
|
+
description,
|
|
95
|
+
ui,
|
|
96
|
+
faqTitle: 'Frequently Asked Questions',
|
|
97
|
+
faq: faqData,
|
|
98
|
+
bibliographyTitle: 'Resources on HTML Tables and Data Formats',
|
|
99
|
+
bibliography: [
|
|
100
|
+
{ name: 'W3C: HTML Tables', url: 'https://www.w3.org/WAI/tutorials/tables/' },
|
|
101
|
+
{ name: 'MDN: HTML table element', url: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table' },
|
|
102
|
+
{ name: 'RFC 4180: CSV Format', url: 'https://tools.ietf.org/html/rfc4180' },
|
|
103
|
+
{ name: 'Google Sheets: Download your data', url: 'https://support.google.com/docs/answer/183965' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Convert Excel and CSV to HTML Tables Easily', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'In modern web development, presenting tabular data is one of the most effective ways to convey structured information. However, manually converting data from a spreadsheet like <strong>Excel</strong> or a <strong>CSV</strong> file to HTML <code><table></code>, <code><tr></code>, and <code><td></code> tags is tedious and error-prone.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Why use semantic HTML tables?', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Accessibility:</strong> Screen readers can interpret the structure and help users with visual disabilities.',
|
|
118
|
+
'<strong>SEO:</strong> Search engines index cell content, improving your data\'s ranking.',
|
|
119
|
+
'<strong>Responsiveness:</strong> With some CSS, HTML tables can adapt to mobile devices.',
|
|
120
|
+
'<strong>Maintainability:</strong> It\'s much easier to edit data in HTML than to regenerate an entire image.',
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{ type: 'title', text: 'How the Excel to HTML Converter Works', level: 3 },
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Our utility uses a native text parser that processes comma-separated files (CSV). Most spreadsheet programs, including Microsoft Excel, Google Sheets, and LibreOffice Calc, allow you to export your data in CSV format.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ConversorExcelCsvHtmlUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'conversor-excel-csv-html-tabla';
|
|
6
|
+
const title = 'Conversor de Excel y CSV a Tabla HTML Generador de Código';
|
|
7
|
+
const description = 'Convierte tus datos de Excel o CSV a tablas HTML semánticas y limpias al instante. Herramienta gratuita para desarrolladores y creadores de contenido.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '¿Cómo convierto un archivo Excel (.xlsx) a HTML?',
|
|
12
|
+
answer: 'Primero, abre tu archivo en Excel y guárdalo como CSV (delimitado por comas). Luego, sube ese archivo CSV a nuestra herramienta o pega su contenido para obtener el código HTML de la tabla.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '¿El código generado incluye estilos CSS?',
|
|
16
|
+
answer: 'El generador produce HTML limpio con clases opcionales para bordes y filas cebra. Los estilos visuales finales dependerán del CSS de tu propio sitio web, asegurando una integración perfecta.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '¿Puedo subir archivos CSV muy grandes?',
|
|
20
|
+
answer: 'Sí, nuestra herramienta procesa los datos localmente en tu navegador. Esto significa que es muy rápida y segura, ya que tus datos nunca viajan por internet.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '¿Es compatible con Google Sheets?',
|
|
24
|
+
answer: 'Totalmente. En Google Sheets, ve a Archivo > Descargar > Valores separados por comas (.csv) y usa ese archivo con nuestra herramienta.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Prepara tus datos',
|
|
31
|
+
text: 'Ten tu archivo Excel o CSV listo. Asegúrate de que los datos estén limpios.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Carga los datos',
|
|
35
|
+
text: 'Pega el texto CSV en el área de entrada o arrastra el archivo directamente al convertidor.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Configura la tabla',
|
|
39
|
+
text: 'Elige si quieres usar la primera fila como encabezado y si deseas estilos básicos.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Copia el código',
|
|
43
|
+
text: 'Cambia a la pestaña de "Código HTML" y copia el resultado para pegarlo en tu web.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'All',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
73
|
+
inLanguage: 'es',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const ui: ConversorExcelCsvHtmlUI = {
|
|
77
|
+
csvInputLabel: 'Pega tu CSV aquí',
|
|
78
|
+
csvInputPlaceholder: 'Nombre,Edad,Ciudad\nJuan,25,Madrid\nAna,30,Barcelona',
|
|
79
|
+
uploadLabel: 'O sube tu archivo (CSV)',
|
|
80
|
+
dragDropLabel: 'Arrastra y suelta tu archivo aquí',
|
|
81
|
+
headerCheckboxLabel: 'Primera fila como encabezado',
|
|
82
|
+
bordersCheckboxLabel: 'Añadir bordes',
|
|
83
|
+
stripeCheckboxLabel: 'Filas cebra',
|
|
84
|
+
previewTabLabel: 'Previsualización',
|
|
85
|
+
codeTabLabel: 'Código HTML',
|
|
86
|
+
emptyStateLabel: 'Introduce datos para ver la tabla',
|
|
87
|
+
copyButtonLabel: 'Copiar Código',
|
|
88
|
+
copiedLabel: '¡Copiado!',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
|
|
92
|
+
slug,
|
|
93
|
+
title,
|
|
94
|
+
description,
|
|
95
|
+
ui,
|
|
96
|
+
faqTitle: 'Preguntas Frecuentes',
|
|
97
|
+
faq: faqData,
|
|
98
|
+
bibliographyTitle: 'Recursos sobre Tablas HTML y Formatos de Datos',
|
|
99
|
+
bibliography: [
|
|
100
|
+
{ name: 'W3C: HTML Tables', url: 'https://www.w3.org/WAI/tutorials/tables/' },
|
|
101
|
+
{ name: 'MDN: HTML table element', url: 'https://developer.mozilla.org/es/docs/Web/HTML/Element/table' },
|
|
102
|
+
{ name: 'RFC 4180: CSV Format', url: 'https://tools.ietf.org/html/rfc4180' },
|
|
103
|
+
{ name: 'Google Sheets: Descargar datos', url: 'https://support.google.com/docs/answer/183965' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Convertir Excel y CSV a Tabla HTML de Forma Fácil', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'En el desarrollo web moderno, la presentación de datos tabulares sigue siendo una de las formas más efectivas de transmitir información estructurada. Sin embargo, pasar manualmente los datos desde una hoja de cálculo como <strong>Excel</strong> o un archivo <strong>CSV</strong> a etiquetas HTML <code><table></code>, <code><tr></code> y <code><td></code> es una tarea tediosa y propensa a errores.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: '¿Por qué usar tablas HTML semánticas?', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Accesibilidad:</strong> Los lectores de pantalla pueden interpretar la estructura y ayudar a usuarios con discapacidad visual.',
|
|
118
|
+
'<strong>SEO:</strong> Los motores de búsqueda indexan el contenido de las celdas, mejorando el posicionamiento de tus datos.',
|
|
119
|
+
'<strong>Responsividad:</strong> Con un poco de CSS, las tablas HTML pueden adaptarse a dispositivos móviles.',
|
|
120
|
+
'<strong>Mantenimiento:</strong> Es mucho más fácil editar un dato en el HTML que regenerar una imagen completa.',
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{ type: 'title', text: 'Cómo funciona el Conversor de Excel a HTML', level: 3 },
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Nuestra utilidad utiliza un analizador de texto nativo que procesa archivos delimitados por comas (CSV). La mayoría de los programas de hojas de cálculo, incluidos Microsoft Excel, Google Sheets y LibreOffice Calc, permiten exportar sus datos en formato CSV.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { ConversorExcelCsvHtmlUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'convertisseur-excel-csv-tableau-html';
|
|
6
|
+
const title = 'Convertisseur Excel et CSV en Tableau HTML Générateur de Code';
|
|
7
|
+
const description = 'Convertissez vos données Excel ou CSV en tableaux HTML propres et sémantiques instantanément. Outil gratuit pour développeurs et créateurs de contenu.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Comment convertir un fichier Excel (.xlsx) en HTML?',
|
|
12
|
+
answer: 'D\'abord, ouvrez votre fichier dans Excel et enregistrez-le en CSV (délimité par des virgules). Ensuite, téléchargez ce fichier CSV sur notre outil ou collez son contenu pour obtenir le code de tableau HTML.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Le code généré inclut-il des styles CSS?',
|
|
16
|
+
answer: 'Le générateur produit du HTML propre avec des classes optionnelles pour les bordures et les rayures zébrées. Les styles visuels finaux dépendent de votre propre CSS, assurant une intégration parfaite.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Puis-je télécharger des fichiers CSV très volumineux?',
|
|
20
|
+
answer: 'Oui, notre outil traite les données localement dans votre navigateur. Cela signifie qu\'il est très rapide et sécurisé, car vos données ne voyagent jamais sur Internet.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Est-ce compatible avec Google Sheets?',
|
|
24
|
+
answer: 'Absolument. Dans Google Sheets, allez à Fichier > Télécharger > Valeurs séparées par des virgules (.csv) et utilisez ce fichier avec notre outil.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Préparez vos données',
|
|
31
|
+
text: 'Ayez votre fichier Excel ou CSV prêt. Assurez-vous que les données sont propres.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Chargez les données',
|
|
35
|
+
text: 'Collez le texte CSV dans la zone de saisie ou faites glisser le fichier directement dans le convertisseur.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Configurez le tableau',
|
|
39
|
+
text: 'Choisissez si vous souhaitez utiliser la première ligne comme en-tête et si vous souhaitez des styles de base.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Copiez le code',
|
|
43
|
+
text: 'Basculez vers l\'onglet "Code HTML" et copiez le résultat à coller sur votre site web.',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'FAQPage',
|
|
50
|
+
mainEntity: faqData.map((item) => ({
|
|
51
|
+
'@type': 'Question',
|
|
52
|
+
name: item.question,
|
|
53
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
54
|
+
})),
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'HowTo',
|
|
60
|
+
name: title,
|
|
61
|
+
description,
|
|
62
|
+
step: howToData.map((s, i) => ({ '@type': 'HowToStep', position: i + 1, name: s.name, text: s.text })),
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
66
|
+
'@context': 'https://schema.org',
|
|
67
|
+
'@type': 'SoftwareApplication',
|
|
68
|
+
name: title,
|
|
69
|
+
description,
|
|
70
|
+
applicationCategory: 'UtilityApplication',
|
|
71
|
+
operatingSystem: 'All',
|
|
72
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
73
|
+
inLanguage: 'fr',
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const ui: ConversorExcelCsvHtmlUI = {
|
|
77
|
+
csvInputLabel: 'Collez votre CSV ici',
|
|
78
|
+
csvInputPlaceholder: 'Nom,Âge,Ville\nJean,25,Madrid\nAna,30,Barcelone',
|
|
79
|
+
uploadLabel: 'Ou téléchargez votre fichier (CSV)',
|
|
80
|
+
dragDropLabel: 'Glissez-déposez votre fichier ici',
|
|
81
|
+
headerCheckboxLabel: 'Utiliser la première ligne comme en-tête',
|
|
82
|
+
bordersCheckboxLabel: 'Ajouter des bordures',
|
|
83
|
+
stripeCheckboxLabel: 'Rayures zébrées',
|
|
84
|
+
previewTabLabel: 'Aperçu',
|
|
85
|
+
codeTabLabel: 'Code HTML',
|
|
86
|
+
emptyStateLabel: 'Entrez des données pour voir le tableau',
|
|
87
|
+
copyButtonLabel: 'Copier le code',
|
|
88
|
+
copiedLabel: 'Copié!',
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export const content: ToolLocaleContent<ConversorExcelCsvHtmlUI> = {
|
|
92
|
+
slug,
|
|
93
|
+
title,
|
|
94
|
+
description,
|
|
95
|
+
ui,
|
|
96
|
+
faqTitle: 'Questions Fréquemment Posées',
|
|
97
|
+
faq: faqData,
|
|
98
|
+
bibliographyTitle: 'Ressources sur les Tableaux HTML et les Formats de Données',
|
|
99
|
+
bibliography: [
|
|
100
|
+
{ name: 'W3C: Tableaux HTML', url: 'https://www.w3.org/WAI/tutorials/tables/' },
|
|
101
|
+
{ name: 'MDN: Élément de tableau HTML', url: 'https://developer.mozilla.org/fr/docs/Web/HTML/Element/table' },
|
|
102
|
+
{ name: 'RFC 4180: Format CSV', url: 'https://tools.ietf.org/html/rfc4180' },
|
|
103
|
+
{ name: 'Google Sheets: Télécharger vos données', url: 'https://support.google.com/docs/answer/183965' },
|
|
104
|
+
],
|
|
105
|
+
howTo: howToData,
|
|
106
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
107
|
+
seo: [
|
|
108
|
+
{ type: 'title', text: 'Convertir facilement Excel et CSV en Tableaux HTML', level: 2 },
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Dans le développement web moderne, la présentation de données tabulaires est l\'une des façons les plus efficaces de transmettre des informations structurées. Cependant, convertir manuellement les données d\'une feuille de calcul comme <strong>Excel</strong> ou un fichier <strong>CSV</strong> en balises HTML <code><table></code>, <code><tr></code> et <code><td></code> est une tâche fastidieuse et sujette à erreurs.',
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Pourquoi utiliser les tableaux HTML sémantiques?', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'list',
|
|
116
|
+
items: [
|
|
117
|
+
'<strong>Accessibilité:</strong> Les lecteurs d\'écran peuvent interpréter la structure et aider les utilisateurs malvoyants.',
|
|
118
|
+
'<strong>SEO:</strong> Les moteurs de recherche indexent le contenu des cellules, améliorant le classement de vos données.',
|
|
119
|
+
'<strong>Réactivité:</strong> Avec un peu de CSS, les tableaux HTML peuvent s\'adapter aux appareils mobiles.',
|
|
120
|
+
'<strong>Maintenabilité:</strong> Il est beaucoup plus facile de modifier les données en HTML que de régénérer une image complète.',
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
{ type: 'title', text: 'Comment fonctionne le convertisseur Excel en HTML', level: 3 },
|
|
124
|
+
{
|
|
125
|
+
type: 'paragraph',
|
|
126
|
+
html: 'Notre utilitaire utilise un analyseur de texte natif qui traite les fichiers séparés par des virgules (CSV). La plupart des programmes de feuilles de calcul, y compris Microsoft Excel, Google Sheets et LibreOffice Calc, vous permettent d\'exporter vos données au format CSV.',
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { DeveloperToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
|
|
2
|
+
import ConversorExcelCsvHtmlComponent from './component.astro';
|
|
3
|
+
import ConversorExcelCsvHtmlSEO from './seo.astro';
|
|
4
|
+
import ConversorExcelCsvHtmlBibliography from './bibliography.astro';
|
|
5
|
+
import type { ConversorExcelCsvHtmlUI } from './ui';
|
|
6
|
+
|
|
7
|
+
export type ConversorExcelCsvHtmlLocaleContent = ToolLocaleContent<ConversorExcelCsvHtmlUI>;
|
|
8
|
+
|
|
9
|
+
import { content as es } from './i18n/es';
|
|
10
|
+
import { content as en } from './i18n/en';
|
|
11
|
+
import { content as fr } from './i18n/fr';
|
|
12
|
+
|
|
13
|
+
export const conversorExcelCsvHtml: DeveloperToolEntry<ConversorExcelCsvHtmlUI> = {
|
|
14
|
+
id: 'conversor-excel-csv-html',
|
|
15
|
+
icons: {
|
|
16
|
+
bg: 'mdi:table',
|
|
17
|
+
fg: 'mdi:file-delimited',
|
|
18
|
+
},
|
|
19
|
+
i18n: {
|
|
20
|
+
es: async () => es,
|
|
21
|
+
en: async () => en,
|
|
22
|
+
fr: async () => fr,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { ConversorExcelCsvHtmlComponent, ConversorExcelCsvHtmlSEO, ConversorExcelCsvHtmlBibliography };
|
|
27
|
+
|
|
28
|
+
export const CONVERSOR_EXCEL_CSV_HTML_TOOL: ToolDefinition = {
|
|
29
|
+
entry: conversorExcelCsvHtml,
|
|
30
|
+
Component: ConversorExcelCsvHtmlComponent,
|
|
31
|
+
SEOComponent: ConversorExcelCsvHtmlSEO,
|
|
32
|
+
BibliographyComponent: ConversorExcelCsvHtmlBibliography,
|
|
33
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { conversorExcelCsvHtml } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await conversorExcelCsvHtml.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ConversorExcelCsvHtmlUI {
|
|
2
|
+
csvInputLabel: string;
|
|
3
|
+
csvInputPlaceholder: string;
|
|
4
|
+
uploadLabel: string;
|
|
5
|
+
dragDropLabel: string;
|
|
6
|
+
headerCheckboxLabel: string;
|
|
7
|
+
bordersCheckboxLabel: string;
|
|
8
|
+
stripeCheckboxLabel: string;
|
|
9
|
+
previewTabLabel: string;
|
|
10
|
+
codeTabLabel: string;
|
|
11
|
+
emptyStateLabel: string;
|
|
12
|
+
copyButtonLabel: string;
|
|
13
|
+
copiedLabel: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { cronGenerator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await cronGenerator.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SharedBibliography links={content.bibliography} />}
|