質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

6629閲覧

JavaScriptでexcelファイルを編集(行の削除など)

koichi_

総合スコア20

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/08/27 02:59

前提・実現したいこと

javaxcriptでexcelファイルを開いて、特定の行を削除したいのですが、やり方がわかりません。
(例えば、A列が"aaa"の箇所を探してその行を削除する。)

知見のある方いらっしゃいましたら、使用したフレームワークなど教えていただけないでしょうか。

調査中

SheetJs
demoのページを調査中。行の削除などはできない ?

Excel JavaScript API
excel用のadd on? javascript単体では操作できない?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/27 03:13

xlsですかxlsxですか、もしくはその他形式ですか?
koichi_

2020/08/27 03:25

xlsxです。 (そういった情報も必要なのですね。申し訳ありません)
退会済みユーザー

退会済みユーザー

2020/08/30 21:24

調べているなら、ちゃんと調べて分からなかったことだけを質問しましょう。 調べている最中に聞いてるということは、あなたの作業を肩代わりしてやることにしかなりません。 https://www.npmtrends.com/xlsx-vs-exceljs-vs-sheetjs 一応上位3つのライブラリを出しました。 sheetjsとxlsxは同じなので、あなたが出している結果にexceljsを加えた形です。 グラフを見る限りxlsx(sheetjs)を使うのが良さげに思えます。 公開質問した以上、xlsxをしっかり調査して、可能ならexceljsを加え、出来ること出来ないこと、機能や速度や使い勝手、品質などを比較調査した結果、誰が見ても納得行く内容を自己回答としてまとめるのが本来の筋かと思います。
退会済みユーザー

退会済みユーザー

2020/08/31 00:11

一応js-xlsx(sheetjsとかxlsxとか言われてるモノ)のサンプルコードを書いときます。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script lang="javascript" src="https://unpkg.com/xlsx@0.16.6/dist/xlsx.full.min.js"></script> <script> window.addEventListener('DOMContentLoaded', (e) => { document.querySelector('button#doit').addEventListener('click', (e) => { const file = document.querySelector('input[name="file"]').files[0]; const reader = new FileReader(); reader.onload = function (e) { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); // aaaを含む行を探す const sheet = workbook.Sheets[workbook.SheetNames[0]]; const range = XLSX.utils.decode_range(sheet['!ref']); const targetRows = []; for (let row = range.s.r; row <= range.e.r; ++row) { for (let cell = range.s.c; cell <= range.e.c; ++cell) { const cellObject = sheet[XLSX.utils.encode_cell({ c: cell, r: row })]; if (cellObject != null && cellObject.w === 'aaa') { targetRows.push(row); break; } } } // 抽出した行を削除(入力規則や関数など未考慮) for (let offset = 0; offset < targetRows.length; ++offset) { const maxRow = offset + 1 < targetRows.length ? targetRows[offset + 1] - (offset + 1) : range.e.r - (offset + 1); for (let row = targetRows[offset] - offset; row < maxRow; ++row) { for (let cell = range.s.c; cell <= range.e.c; ++cell) { const to_cell_ref = XLSX.utils.encode_cell({ c: cell, r: row }); const from_cell_ref = XLSX.utils.encode_cell({ c: cell, r: row + (offset + 1) }); sheet[to_cell_ref] = sheet[from_cell_ref]; } } } range.e.r -= targetRows.length; sheet['!ref'] = XLSX.utils.encode_range(range.s, range.e); // 保存 XLSX.writeFile(workbook, 'out.xlsx'); }; reader.readAsArrayBuffer(file); }, false); }); </script> </head> <body> <input type="file" name="file"> <button id="doit">do it!</button> </body> </html>
guest

回答2

0

ExcelJSというライブラリがありました。
以下はその存在を知ったきっかけの記事です。
Generating Excel Files using Node.js and ExcelJS
ご参考まで。

投稿2020/08/27 11:31

shinji709

総合スコア805

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

jsで処理するにはちょっと面倒なことが多いかもしれません
VBAもしくはVBSを利用してwshで処理すると様々な条件で対応できると思います

投稿2020/08/27 03:28

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/27 03:29

xlsxならzipしたxmlですから、jsの機能でも不可能ではないと思いますが・・・
koichi_

2020/08/27 03:53

そうなのですね。回答ありがとうございます。 サーバー側かクライアント(chrome)側でexcelファイルを編集したいので、 javascript内で処理したいのですが、、 本題から外れてしまい申し訳ないのですが、最後に一つ質問させてください。 VBAはexcel上でしか使ったことがないのですが、wsh?を使うとvbaのスクリプトをjavascript側から呼べたりするのでしょうか? (知見がないため、的はずれな質問をしていたら申し訳ありません。)
yambejp

2020/08/27 03:56

> wsh?を使うとvbaのスクリプトをjavascript側から呼べたりするのでしょうか? jsで処理するなブラウザがアクティブXコントローラに対応している必要があるでしょう。 IEが現役ならともかくブラウザでやるのはあまり現実的ではありません。
koichi_

2020/08/27 04:15

ありがとうございます。やはりjavascriptだと難しいんですかね。 もう少し調べて難しそうならクローズしておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問