EPPlus4.5.3.3(OSS時の最終バージョン)で、xlsxファイルを開いて保存した時、内部のDrawings.xmlが整形される事を防ぎたい。

実現したいこと

ここに実現したいことを箇条書きで書いてください。

前提

C#(.Net Framework4.7.2)でEpPlus4.5.3.3を使用して、既存の図形を持つExcelファイルを開き、セルに入力をして保存するアプリケーションを作成しようとしています。
(図形に対して編集等は行いません。セルに対する値の入力のみです。)

その際、空白文字が入力された図形を持つExcelファイルを開いて保存すると、空白文字が改行される不具合が起きる事に気づきました。
原因はdrawing*.xmlが次の様に変更される事で、空白文字がxmlのインデントと改行に変わっている事だと考えています。
これはdrawing*.xmlが勝手に整形される事で、空白文字がxmlのインデントと改行に飲み込まれる為だと思っています。
その為、私はこの問題を発生させない為に、整形が行われるのを防ぎたいと考えています。

サポート終了したOSSを使用しようとしていますので、不具合は自分で解析して直すのが当然かと思いますので、このような質問をしてしまって申し訳ないのですが、
もし良ければ皆様の環境ではどうだったかという、達成したい事の二行目の方だけでもご意見頂きたいです。

保存前のExcel

Excel上で入力した図形内の文字

1aaa 2 3aaa aa 4

xml

1<?xml version="1.0" encoding="UTF-8" standalone="yes"?>2<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><xdr:twoCellAnchor><xdr:from><xdr:col>3</xdr:col><xdr:colOff>266700</xdr:colOff><xdr:row>3</xdr:row><xdr:rowOff>152400</xdr:rowOff></xdr:from><xdr:to><xdr:col>6</xdr:col><xdr:colOff>123825</xdr:colOff><xdr:row>9</xdr:row><xdr:rowOff>200025</xdr:rowOff></xdr:to><xdr:sp macro="" textlink=""><xdr:nvSpPr><xdr:cNvPr id="2" name="正方形/長方形 1"><a:extLst><a:ext uri="{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"><a16:creationId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" id="{9EE6780C-783E-58D3-9ED2-D98FF118C2B1}"/></a:ext></a:extLst></xdr:cNvPr><xdr:cNvSpPr/></xdr:nvSpPr><xdr:spPr><a:xfrm><a:off x="2324100" y="866775"/><a:ext cx="1914525" cy="1476375"/></a:xfrm><a:prstGeom prst="rect"><a:avLst/></a:prstGeom></xdr:spPr><xdr:style><a:lnRef idx="2"><a:schemeClr val="accent1"><a:shade val="15000"/></a:schemeClr></a:lnRef><a:fillRef idx="1"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="0"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></xdr:style><xdr:txBody><a:bodyPr vertOverflow="clip" horzOverflow="clip" rtlCol="0" anchor="t"/><a:lstStyle/><a:p><a:pPr algn="l"/><a:r><a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100"/><a:t>aaa</a:t></a:r></a:p><a:p><a:pPr algn="l"/><a:r><a:rPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100"/><a:t>  </a:t></a:r><a:endParaRPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100"/></a:p><a:p><a:pPr algn="l"/><a:r><a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100"/><a:t>aaa</a:t></a:r><a:r><a:rPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100"/><a:t>  </a:t></a:r><a:r><a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100"/><a:t>aa</a:t></a:r></a:p><a:p><a:pPr algn="l"/><a:endParaRPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100"/></a:p></xdr:txBody></xdr:sp><xdr:clientData/></xdr:twoCellAnchor></xdr:wsDr>

保存後のExcel

Excel上で表示された図形内の文字

1aaa 2 3 4aaa 5 aa 6

xml

1<?xml version="1.0" encoding="UTF-8" standalone="yes"?>2<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">3 <xdr:twoCellAnchor>4 <xdr:from>5 <xdr:col>3</xdr:col>6 <xdr:colOff>266700</xdr:colOff>7 <xdr:row>3</xdr:row>8 <xdr:rowOff>152400</xdr:rowOff>9 </xdr:from>10 <xdr:to>11 <xdr:col>6</xdr:col>12 <xdr:colOff>123825</xdr:colOff>13 <xdr:row>9</xdr:row>14 <xdr:rowOff>200025</xdr:rowOff>15 </xdr:to>16 <xdr:sp macro="" textlink="">17 <xdr:nvSpPr>18 <xdr:cNvPr id="2" name="正方形/長方形 1">19 <a:extLst>20 <a:ext uri="{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}">21 <a16:creationId xmlns:a16="http://schemas.microsoft.com/office/drawing/2014/main" id="{9EE6780C-783E-58D3-9ED2-D98FF118C2B1}" />22 </a:ext>23 </a:extLst>24 </xdr:cNvPr>25 <xdr:cNvSpPr />26 </xdr:nvSpPr>27 <xdr:spPr>28 <a:xfrm>29 <a:off x="2324100" y="866775" />30 <a:ext cx="1914525" cy="1476375" />31 </a:xfrm>32 <a:prstGeom prst="rect">33 <a:avLst />34 </a:prstGeom>35 </xdr:spPr>36 <xdr:style>37 <a:lnRef idx="2">38 <a:schemeClr val="accent1">39 <a:shade val="15000" />40 </a:schemeClr>41 </a:lnRef>42 <a:fillRef idx="1">43 <a:schemeClr val="accent1" />44 </a:fillRef>45 <a:effectRef idx="0">46 <a:schemeClr val="accent1" />47 </a:effectRef>48 <a:fontRef idx="minor">49 <a:schemeClr val="lt1" />50 </a:fontRef>51 </xdr:style>52 <xdr:txBody>53 <a:bodyPr vertOverflow="clip" horzOverflow="clip" rtlCol="0" anchor="t" />54 <a:lstStyle />55 <a:p>56 <a:pPr algn="l" />57 <a:r>58 <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100" />59 <a:t>aaa</a:t>60 </a:r>61 </a:p>62 <a:p>63 <a:pPr algn="l" />64 <a:r>65 <a:rPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100" baseline="0" />66 <a:t>67 </a:t>68 </a:r>69 <a:endParaRPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100" />70 </a:p>71 <a:p>72 <a:pPr algn="l" />73 <a:r>74 <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100" />75 <a:t>aaa</a:t>76 </a:r>77 <a:r>78 <a:rPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100" baseline="0" />79 <a:t>80 </a:t>81 </a:r>82 <a:r>83 <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" sz="1100" />84 <a:t>aa</a:t>85 </a:r>86 </a:p>87 <a:p>88 <a:pPr algn="l" />89 <a:endParaRPr kumimoji="1" lang="ja-JP" altLang="en-US" sz="1100" />90 </a:p>91 </xdr:txBody>92 </xdr:sp>93 <xdr:clientData />94 </xdr:twoCellAnchor>95</xdr:wsDr>

該当のソースコード

C#

1 public void GenerateSheet()2 {3 var ofd = new OpenFileDialog();4 if (ofd.ShowDialog() != DialogResult.OK)5 return;6 7 var sfd = new SaveFileDialog();8 if (sfd.ShowDialog() != DialogResult.OK)9 return;10 11 using (var package = new ExcelPackage(new FileInfo(ofd.FileName)))12 {13 var workbook = package.Workbook;14 var sheet = workbook.Worksheets[1];15 16 var fii = new FileInfo(sfd.FileName);17 package.SaveAs(fii);18 }19 }

試したこと

  • 内部の全てのファイルを確認した訳ではありませんが、workbook.xmlやworksheets/sheet1.xml等複数のファイルを確認した処、このようなフォーマットがされているのはdrawing1.xmlのみでした。
  • 保存後のシートの空白文字の数はxmlのインデントの数と一致しました。

コメントを投稿

0 コメント