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

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

詳細はこちら
Open XML SDK

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

Q&A

解決済

1回答

3871閲覧

Open XMLでExcelファイルを絶対パス指定で保存できない

hi.oguro

総合スコア28

Open XML SDK

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

0グッド

0クリップ

投稿2017/06/13 10:46

編集2017/06/14 04:34

【開発環境】
OS:Windows10
開発ツール:Visual Studio 2013 Communty
その他:Open XML SDK 2.0

Open XMLを使用しExcelファイルを生成したいと考えております。
以下、ソースを載せておりますが
1行目の「C:\test.xlsx」で絶対パスを指定すると保存する事ができません。
※「"パス 'C:\test.xlsx' へのアクセスが拒否されました。」とエラーが出ます
ここを相対パス「../test.xlsx」にすると正常に保存出来ます。
同じ経験された方いましたら、助言を頂けないでしょうか。
宜しくお願い致します。

以下、コードです。


// 新しいドキュメントを作成
SpreadsheetDocument document = SpreadsheetDocument.Create(@"C:\test.xlsx", SpreadsheetDocumentType.Workbook, true);

// ドキュメントのワークブックパートに、ワークブックを設定
WorkbookPart wbpart = document.AddWorkbookPart();
wbpart.Workbook = new Workbook();

// ワークブックパートに、ワークシートパートを設定
WorksheetPart wspart = wbpart.AddNewPart<WorksheetPart>();
SheetData sheetData = new SheetData();
wspart.Worksheet = new Worksheet(sheetData);

// ワークブックにシートを設定
Sheets sheets = wbpart.Workbook.AppendChild<Sheets>(new Sheets());

// シートを一つ追加
Sheet sheet = new Sheet() { Id = wbpart.GetIdOfPart(wspart), SheetId = 1, Name = "Sheet1" };
sheets.Append(sheet);

// ここまでがお決まりの処理
// Sheetではなく、SheetDataにデータを設定していく

// Cell単独では存在できない模様
// Rowオブジェクトを作成、そこにCellデータを追加していく。
Row row = new Row();

Cell cell = new Cell();
cell.DataType = CellValues.String;
cell.CellReference = "R1C1";
cell.CellValue = new CellValue("B1のセル");
row.Append(cell);

// 行が変わるタイミングで、Rowオブジェクトを再設定
sheetData.Append(row);
row = new Row();

cell = new Cell();
cell.DataType = CellValues.String;
cell.CellReference = "A2";
cell.CellValue = new CellValue("A2のセル");
row.Append(cell);

// 最後にRowをSheetDataに追加
sheetData.Append(row);

// ファイルを保存
document.Close();


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

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

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

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

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

guest

回答1

0

自己解決

自己解決しましたのでご報告します。

単純にWindows10ではデフォルトで
Cドライブ直下にアクセスする権限が無いことが分かりました。
コードの問題ではありませんでした。
申し訳ありません。

投稿2017/06/15 04:31

hi.oguro

総合スコア28

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問