16

Excel ファイルを開こうとすると、「ファイル名の一部のコンテンツに問題が見つかりました。できる限り回復を試みますか? このワークブックのソースを信頼する場合は、次のようなメッセージ ボックスが表示されます。 [はい] をクリックします。」実際に行ったことは、Excelテンプレートを設計し、ファイルを別のファイルにコピーして一時ファイルを作成し、OPEN XMLを使用して一時ファイルにデータを挿入し、データをデータベースから取得していることです。

ネットで提供されている解決策を試しましたが、それらの修正で問題が解決しません。私の Excel は 2010 です。

ここに画像の説明を入力

ここに画像の説明を入力

提供されたソリューションは誰でも大歓迎です。

4

7 に答える 7

7

この問題がありました。これは、セルに数値と文字列を格納する方法が原因でした。

数値は を使用して簡単に保存できますcell.CellValue = new CellValue("5")が、数値以外のテキストの場合は、SharedStringTable 要素に文字列を挿入し、その文字列のインデックスを取得する必要があります。次に、セルのデータ型を SharedString に変更し、セルの値を SharedStringTable 内の文字列のインデックスに設定します。

// Here is the text I want to add.
string text = "Non-numeric text.";

// Find the SharedStringTable element and append my text to it.
var sharedStringTable = document.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First().SharedStringTable;
var item = sharedStringTable.AppendChild(new SharedStringItem(new Text(text)));

// Set the data type of the cell to SharedString.
cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);

// Set the value of the cell to the index of the SharedStringItem.
cell.CellValue = new CellValue(item.ElementsBefore().Count().ToString());

これについては、次のドキュメントで説明されています: http://msdn.microsoft.com/en-us/library/office/cc861607.aspx

于 2014-01-07T22:03:30.850 に答える
2

問題は使用によるものです

package.Save();

package.GetAsByteArray();

同時に

私たちが電話するとき

package.GetAsByteArray();

次の操作を行います

this.Workbook.Save(); this._package.Close(); this._package.Save(this._stream);

したがって、

package.Save();

「ファイル名の一部のコンテンツに問題が見つかりました。できる限り回復を試みますか? このブックのソースが信頼できる場合は、[はい] をクリックしてください。」

于 2019-08-21T10:22:45.670 に答える
0

別の考えられる原因は、セル スタイルの最大数を超えている可能性があります。

以下を定義できます。

  • .xls ワークブックで最大 4000 のスタイル
  • .xlsx ワークブックで最大 64000 スタイル

この場合、セルごとに新しいセル スタイルを作成するのではなく、複数のセルに同じセル スタイルを再利用する必要があります。

于 2016-12-07T15:02:25.517 に答える