国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用SheetJs實現(xiàn)在線預(yù)覽Excel(保留單元格格式信息)

這篇具有很好參考價值的文章主要介紹了使用SheetJs實現(xiàn)在線預(yù)覽Excel(保留單元格格式信息)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、尋找合適的在線預(yù)覽Excel的js庫

?

我:
在線預(yù)覽Excel文件有哪些好用的js庫
?

?

ChatGPT:
有幾個好用的JavaScript庫可以用來在網(wǎng)頁上實現(xiàn)在線預(yù)覽Excel文件。以下是一些常見且功能強(qiáng)大的庫:
  1. SheetJS (xlsx.js): 這是一個功能強(qiáng)大的庫,可以在網(wǎng)頁上實現(xiàn)Excel文件的讀取、寫入和預(yù)覽。它支持多種Excel格式,包括XLSX、XLS、CSV等。你可以使用SheetJS來讀取Excel文件內(nèi)容,并將其呈現(xiàn)在網(wǎng)頁上的HTML表格中。

  2. Handsontable: Handsontable是一個用于創(chuàng)建豐富交互式表格的庫,支持Excel樣式的編輯和查看功能。它可以將Excel文件內(nèi)容以表格的形式呈現(xiàn)在網(wǎng)頁上,用戶可以編輯和查看數(shù)據(jù)。該庫還提供了很多定制和擴(kuò)展的選項。

  3. DHTMLX Spreadsheet: 這是一個基于JavaScript的電子表格庫,支持Excel樣式的功能,包括公式、格式化、排序、篩選等。它可以在網(wǎng)頁上呈現(xiàn)Excel文件,并提供與電子表格相關(guān)的功能。

  4. ExcelJS: ExcelJS是一個用于讀取、創(chuàng)建和修改Excel文件的庫,可以在網(wǎng)頁上進(jìn)行操作。它支持XLSX格式,允許你生成Excel文件,并支持多種單元格格式。

  5. FlexGrid: Wijmo FlexGrid是一個功能強(qiáng)大的網(wǎng)格控件,支持Excel樣式的功能,如排序、篩選、分組等。它可以用于在網(wǎng)頁上呈現(xiàn)Excel文件,并提供類似于Excel的交互體驗。

這些庫中的每一個都有其獨特的特點和優(yōu)勢,根據(jù)你的需求和項目的要求,你可以選擇適合的庫來實現(xiàn)在線預(yù)覽Excel文件功能。

??

二、基礎(chǔ)版實現(xiàn)代碼
?
<script>
(async() => {
  /* replace with the URL of the file */
  const URL_TO_DOWNLOAD = "https://sheetjs.com/pres.numbers";
  const ab = await (await fetch(URL_TO_DOWNLOAD)).arrayBuffer();

  /* Parse file and get first worksheet */
  const wb = XLSX.read(ab);
  const wsname = wb.SheetNames[0];
  const ws = wb.Sheets[wsname];

  /* Generate HTML */
  var output = document.getElementById("TableContainer");
  output.innerHTML = XLSX.utils.sheet_to_html(ws);
})();
</script>

??

三、增強(qiáng)版實現(xiàn)代碼,支持單元格格式等

由于基礎(chǔ)實現(xiàn)丟失了很多關(guān)鍵格式信息,比如字體大小、背景色、對齊方式、批注等。于是請教ChatGpt幫忙寫代碼。下面是ChatGpt寫出來的代碼,正確與否待驗證

<!DOCTYPE html>
<html>
<head>
  <title>Excel Online Preview</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js"></script>
  <style>
    /* 根據(jù)需要設(shè)置單元格樣式 */
    .cell {
      padding: 5px;
      border: 1px solid #ccc;
      font-family: Arial, sans-serif;
    }
  </style>
</head>
<body>
  <button id="loadExcelButton">加載Excel</button>
  <div id="excelPreview"></div>

  <script>
    document.getElementById('loadExcelButton').addEventListener('click', function() {
      fetchExcelData();
    });

    function fetchExcelData() {
      fetch('URL_OF_YOUR_BACKEND_API')
        .then(response => response.arrayBuffer())
        .then(data => {
          var workbook = XLSX.read(new Uint8Array(data), { type: 'array' });
          var sheetName = workbook.SheetNames[0];
          var sheet = workbook.Sheets[sheetName];
          var cellData = XLSX.utils.sheet_to_json(sheet, { header: 1 });

          var htmlTable = '<table>';
          for (var row = 0; row < cellData.length; row++) {
            htmlTable += '<tr>';
            for (var col = 0; col < cellData[row].length; col++) {
              var cellValue = cellData[row][col];
              var cellRef = XLSX.utils.encode_cell({ r: row, c: col });
              var cell = sheet[cellRef];
              var cellStyle = cell ? cell.s : {};
              var cellStyleAttr = 'style="' + getCellStyle(cellStyle) + '"';
              var mergeAttr = getMergeAttributes(sheet, row, col);
              var comment = getCellComment(cell);

              var cellHtml = '<td class="cell" ' + cellStyleAttr + ' ' + mergeAttr + '" title="' + comment + '">' + cellValue + '</td>';
              htmlTable += cellHtml;
            }
            htmlTable += '</tr>';
          }
          htmlTable += '</table>';

          document.getElementById('excelPreview').innerHTML = htmlTable;
        })
        .catch(error => {
          console.error('Error fetching Excel data:', error);
        });
    }

    function getCellStyle(cellStyle) {
      var styleAttr = '';
      if (cellStyle.font) {
        var font = cellStyle.font;
        if (font.bold) styleAttr += 'font-weight:bold;';
        if (font.italic) styleAttr += 'font-style:italic;';
        if (font.underline) styleAttr += 'text-decoration:underline;';
        if (font.strike) styleAttr += 'text-decoration:line-through;';
        if (font.color) styleAttr += 'color:' + font.color.rgb + ';';
        if (font.name) styleAttr += 'font-family:' + font.name + ';';
      }
      if (cellStyle.alignment) {
        var alignment = cellStyle.alignment;
        if (alignment.horizontal) styleAttr += 'text-align:' + alignment.horizontal + ';';
        if (alignment.vertical) styleAttr += 'vertical-align:' + alignment.vertical + ';';
      }
      if (cellStyle.fill) {
        var fill = cellStyle.fill;
        if (fill.patternType === 'solid' && fill.fgColor) {
          styleAttr += 'background-color:' + fill.fgColor.rgb + ';';
        }
      }
      return styleAttr;
    }

    function getMergeAttributes(sheet, row, col) {
      var mergeCells = sheet['!merges'] || [];
      for (var i = 0; i < mergeCells.length; i++) {
        var mergeRange = XLSX.utils.decode_range(mergeCells[i]);
        if (row >= mergeRange.s.r && row <= mergeRange.e.r && col >= mergeRange.s.c && col <= mergeRange.e.c) {
          return 'rowspan="' + (mergeRange.e.r - mergeRange.s.r + 1) + '" colspan="' + (mergeRange.e.c - mergeRange.s.c + 1) + '"';
        }
      }
      return '';
    }

    function getCellComment(cell) {
      if (cell && cell.c) {
        var comment = cell.c[0].t;
        return comment;
      }
      return '';
    }
  </script>
</body>
</html>

圖片展示

使用SheetJs實現(xiàn)在線預(yù)覽Excel(保留單元格格式信息)

經(jīng)過驗證,ChatGpt生成的代碼總體邏輯是對的,但是很多細(xì)節(jié)是錯的,比如類型對不上,屬性缺失等等問題,導(dǎo)致單元格格式并沒有完整正確地展示到頁面上。比如:對齊信息、顏色信息缺失。合并單元格和批注信息倒是有的。不知道是SheetJs的問題,還是我們不會用SheetJs。如果要展示原始格式,還是用其它插件吧。

?

發(fā)現(xiàn)一個代碼高亮轉(zhuǎn)成圖片的網(wǎng)站:

https://10015.io/tools/code-to-image-converter?utm_source=appinn.com文章來源地址http://www.zghlxwxcb.cn/news/detail-685694.html

到了這里,關(guān)于使用SheetJs實現(xiàn)在線預(yù)覽Excel(保留單元格格式信息)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java超簡單實現(xiàn)文檔在線預(yù)覽功能,支持word\excel\text\pdf\圖片等格式轉(zhuǎn)pdf,aspost 轉(zhuǎn)pdf部署linux中文亂碼解決方案

    java超簡單實現(xiàn)文檔在線預(yù)覽功能,支持word\excel\text\pdf\圖片等格式轉(zhuǎn)pdf,aspost 轉(zhuǎn)pdf部署linux中文亂碼解決方案

    一、背景 ????????在工作中需要對上傳到服務(wù)器的各種類型包括但不限于word、pdf、excel等文件進(jìn)行在線預(yù)覽,前端比較菜搞不定,只能本人親自上。 ? ? ? ? 網(wǎng)上的經(jīng)驗比較多也比較亂, 有的只有預(yù)覽,沒有文件格式轉(zhuǎn)換,有的也不說linux存在字體問題, 本文會直白的給

    2024年04月10日
    瀏覽(596)
  • Python實現(xiàn)Excel中的sheet復(fù)制(可跨文件操作、可保留原格式)

    Python實現(xiàn)Excel中的sheet復(fù)制(可跨文件操作、可保留原格式)

    使用說明: src_xlsx 源Excel文件 ssheetname 源Excel文件中需要復(fù)制的sheet dst_xlsx 目標(biāo)Excel文件 nsheetname 目標(biāo)Excel文件中復(fù)制后的sheet 注意: 上述函數(shù)只能復(fù)制內(nèi)容,不能保留Excel中的格式,例如字體、背景色等。如果有需要保留原格式,請使用下面下一個函數(shù)。 代碼解析: 該方法

    2024年02月03日
    瀏覽(19)
  • 文檔在線預(yù)覽(四)將word、txt、ppt、excel、圖片轉(zhuǎn)成pdf來實現(xiàn)在線預(yù)覽

    文檔在線預(yù)覽(四)將word、txt、ppt、excel、圖片轉(zhuǎn)成pdf來實現(xiàn)在線預(yù)覽

    @ 目錄 事前準(zhǔn)備 1、需要的maven依賴 添加spire依賴(商用,有免費版,但是存在頁數(shù)和字?jǐn)?shù)限制,不采用spire方式可不添加) 2、后面用到的工具類代碼: 一、word文件轉(zhuǎn)pdf文件(支持doc、docx) 1、使用aspose方式 2、使用poi方式 3、使用spire方式 二、txt文件轉(zhuǎn)pdf文件 三、PPT文件轉(zhuǎn)

    2024年02月08日
    瀏覽(109)
  • Linux環(huán)境Libreoffice實現(xiàn)Word、Excel等在線預(yù)覽

    Linux環(huán)境Libreoffice實現(xiàn)Word、Excel等在線預(yù)覽

    目錄 轉(zhuǎn)PDF 一、Linux安裝libreoffice 二、Java代碼實現(xiàn) 這里介紹的是在linux環(huán)境(windows環(huán)境類似)下實現(xiàn)講word、Excel、ppt、txt以及png圖片轉(zhuǎn)換為PDF文件后實現(xiàn)的預(yù)覽。由于需要轉(zhuǎn)換為PDF文件, 當(dāng)Excel表格太大太寬的時候,可能出現(xiàn)換頁等格式被破壞的情況。 從官網(wǎng)下載對應(yīng)版本的

    2024年02月08日
    瀏覽(22)
  • 【Vue實用功能】Vue實現(xiàn)文檔在線預(yù)覽功能,在線預(yù)覽PDF、Word、Excel、ppt等office文件

    【Vue實用功能】Vue實現(xiàn)文檔在線預(yù)覽功能,在線預(yù)覽PDF、Word、Excel、ppt等office文件

    Luckysheet 是一個類似于 excel 的在線電子表格,功能強(qiáng)大、配置簡單且完全開源。 安裝 Luckysheet 1、通過CDN引入依賴 由于 Luckysheet 現(xiàn)在還沒有發(fā)布出模塊化的開發(fā),不能使用 npm,所以我們需要在 VUE 項目中手動引入相關(guān)文件。編輯 public/index.html 文件,在里面添加如下代碼 2、指

    2023年04月22日
    瀏覽(312)
  • Java 實現(xiàn)word、excel、ppt、txt等辦公文件在線預(yù)覽功能!

    Java 實現(xiàn)word、excel、ppt、txt等辦公文件在線預(yù)覽功能!

    如何用 Java 實現(xiàn)word、excel、ppt、txt等辦公文件在線預(yù)覽功能?本文告訴你答案! java 實現(xiàn)辦公文件在線預(yù)覽功能是一個大家在工作中也許會遇到的需求,網(wǎng)上些公司專門提供這樣的服務(wù),不過需要收費。 如果想要免費的,可以用 openoffice,實現(xiàn)原理就是: 通過第三方工具op

    2024年02月11日
    瀏覽(92)
  • Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)

    Java實現(xiàn)office辦公文檔在線預(yù)覽(word、excel、ppt、txt等)

    文章目錄 一、官網(wǎng)下載openOffice 安裝包,運行安裝(不同系統(tǒng)的安裝請自行百度,這里不做過多描述) 二、pom中引入依賴 三、office文件轉(zhuǎn)為pdf流的工具類 四、service層代碼? 五、controller層代碼 office辦公文檔,如doc、docx、xls、xlsx、ppt、pptx是無法直接在瀏覽器中打開的,但很

    2024年02月11日
    瀏覽(91)
  • 使用SheetJS讀寫Excel文件

    使用SheetJS讀寫Excel文件

    項目中有一個Excel轉(zhuǎn)JSON的工具,之前這個工具一直使用 Python 的 openpyxl 庫來編寫的,然后使用 pyinstaller 打包成 .exe 文件。之前這個工具只是個命令行工具,不帶界面的?,F(xiàn)在項目升級,打算使用Web前端方式重寫這個工具,調(diào)整部分功能并新增圖形界面。這篇文章中將使用 S

    2024年02月14日
    瀏覽(23)
  • vue 實現(xiàn) word/excel/ppt/pdf 等文件格式預(yù)覽操作

    vue 實現(xiàn) word/excel/ppt/pdf 等文件格式預(yù)覽操作

    第三方服務(wù)接口地址:XDOC文檔預(yù)覽服務(wù) 特征: 有文件大小限制,超過要收費! 使用方法 ?參考地址:https://api.gitee.com/zhou_andong/vue-office/ 一、安裝插件 vue-office 二、在引用時會涉及版本不兼容的問題 可以在npm包庫 ,查看版本:https://www.npmjs.com/ 1、搜索插件名 2、以下版本沒

    2024年02月16日
    瀏覽(110)
  • sheetJS實現(xiàn)把excel導(dǎo)入數(shù)據(jù)庫

    sheetJS實現(xiàn)把excel導(dǎo)入數(shù)據(jù)庫

    ? ? ? ? 最近在做報表導(dǎo)入數(shù)據(jù)庫的需求,報表文件為excel里面有多個sheet。 使用FileReader異步讀取上傳的文件。 使用sheet.js進(jìn)行excel表格內(nèi)容的解析。 使用bootstrap.js的tab組件對上傳的表格進(jìn)行一個頁面預(yù)覽的展示。 ????????ImportReportForm.asp ImportReport.asp ????????先選擇

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包