🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Open XML

Open XMLは、マイクロソフト社が開発したオープンなXMLベースのオフィススイート用のファイル形式です。従来のバイナリ形式のフォーマットに代わって、XMLを用いた規格を標準ファイル形式として採用しています。

Open XML SDK

Open XML SDKは、Office2007から採用されているドキュメントファイルフォーマット。オープンソースとしてGitHubで公開されています。Office Open XMLファイルを作成したり編集することが可能です。

Q&A

解決済

3回答

10215閲覧

openXMLで読み込んだエクセルファイルを複製し編集したい。

shikasama

総合スコア163

Open XML

Open XMLは、マイクロソフト社が開発したオープンなXMLベースのオフィススイート用のファイル形式です。従来のバイナリ形式のフォーマットに代わって、XMLを用いた規格を標準ファイル形式として採用しています。

Open XML SDK

Open XML SDKは、Office2007から採用されているドキュメントファイルフォーマット。オープンソースとしてGitHubで公開されています。Office Open XMLファイルを作成したり編集することが可能です。

0グッド

0クリップ

投稿2016/08/31 05:25

編集2016/11/10 13:46

openXMLで読み込んだドキュメントを複製し編集することは可能でしょうか?可能な場合どのように実現したらよいかご教示ください。

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

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

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

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

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

guest

回答3

0

別の質問 が解決してこちらにも応用できるので、こちらも回答します。
Open XML SDK で EXCELファイル を複写・編集するには以下のようになります。

C#

1using (MemoryStream ms = new MemoryStream() 2{ 3 var bytes = System.IO.File.ReadAllBytes(複写元のファイルパス); 4 ms.Write(bytes, 0, bytes.Length); 5 6 using (SpreadsheetDocument document = SpreadsheetDocument.Open(ms, true)) 7 { 8 // 編集する 9 } 10 11 System.IO.File.WriteAllBytes(複写先のファイルパス, ms.ToArray()); 12}

質問のタグには「EXCEL」だけしか付いていませんが、他の人が同様のことで悩んでるときに見つけやすくするため、「Open XML」もタグに追加してもらってもいいですか?

投稿2016/09/07 08:44

編集2016/09/08 00:31
twck

総合スコア314

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

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

shikasama

2016/09/07 08:53

twck様 「Open XML」のタグがなかったためExcelのみにしておりました。 追加要望を出しましたので、追加され次第タグ編集したいと思います。
twck

2016/09/07 09:18

ああ、タグって自由に追加できなかったのですね。 すみません。お手数お掛けします。
shikasama

2016/09/08 00:12 編集

twck様 using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes(複写元のファイルパス)) 上記の方法だと編集してサイズが大きくなるとメモリエラーになってしまうようです。 参考↓ http://nanamb.blog25.fc2.com/blog-entry-301.html 解決策としてインスタンスを作ってからバイト配列を書き込むのが良いみたいです。
twck

2016/09/08 00:40

うわあ。そうか、このせいでusingの閉じた書き込み時に例外が発生していたのか。 サンプルコードにするため余計な部分を削ったからサイズが大きくならなくて、例外が発生しなくなったんだな。 というわけで回答のコードを修正いたしました。 やっぱ熟練していない技術に回答するのは危険ですね。 申し訳ありませんでした。
shikasama

2016/09/08 01:05

twck様 いえ、おかげさまで解決できただけでなく大変勉強になりました。 大変助かりました。 もしよろしければ、下記の方もご助力いただければと思います。 https://teratail.com/questions/47150
guest

0

自己解決

以下のサイトを参考に解決しました。

ファイルのコピー
http://study-csharp.blogspot.jp/2012/08/cfilefileinfofilestream.html
Excelの編集
https://msdn.microsoft.com/ja-jp/library/office/cc861607.aspx

投稿2016/09/02 08:20

shikasama

総合スコア163

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

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

0

http://blog.modd.com/entry/2016/01/26/125206
↑この辺りを参照してみてはどうでしょうか?

投稿2016/08/31 08:05

PineMatsu

総合スコア3579

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

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

shikasama

2016/09/02 08:18

PineMatsu様 返信遅くなってしまい申し訳ありません。 参考にさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問