このコードをご覧ください。C#でファイルストリームを閉じる方法
string name = dt.Rows[0]["Name"].ToString();
byte[] documentBytes = (byte[])dt.Rows[0]["DocumentContent"];
int readBytes = 0;
//int index = 0;
readBytes = documentBytes.Length;
try
{
using (FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write, FileShare.Read))
{
fs.Write(documentBytes, 0, readBytes);
//System.Diagnostics.Process prc = new System.Diagnostics.Process();
//prc.StartInfo.FileName = fs.Name;
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
app.Visible = false;
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Open(fs.Name);
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; // Explicit cast is not required here
// lastRow = worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row;
app.Visible = true;
fs.Flush();
fs.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("You have clicked more than one time. File is already open.", "WorkFlow", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
ファイルストリームを使用してExcelファイルを開きます。 Excelがうまく表示されています。しかし、私はファイルストリームを閉じることができません。それにはまだ「File Now available」という小さなポップアップが表示されます。それを取り除く方法?私はfs.Close()とFlush()が本当にここで働いていないのを見ることができます。助けてください。
"ファイルが利用可能になりました"?それは本当にメッセージですか? – Default
Excelはファイル上でFileShare.Readを使用したことに気づくだけなので、書き込みできないことが分かり、読み取り専用モードでファイルを開く必要があります。ファイルを閉じると、再び幸せになります。回避策は簡単ですが、Excelを起動する前に*ファイルを閉じてください。 –
あなたのコードはストリームに対して 'using'と' Close'の両方を持っています - 両方を持つことは冗長です。 –