DataSet
をExcelにエクスポートするコンソールアプリケーションを作成する必要があります。問題は、保存ウィンドウをポップアップするのではなく、Excelファイルを自動的に作成することです。これまでのところ、次のコードがありますが、自動的に保存する方法がわかりません。どんな助けにも感謝します。
public static void CreateWorkbook(DataSet ds, String path)
{
int rowindex = 0;
int columnindex = 0;
Microsoft.Office.Interop.Excel.Application wapp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet wsheet;
Microsoft.Office.Interop.Excel.Workbook wbook;
wapp.Visible = false;
wbook = wapp.Workbooks.Add(true);
wsheet = (Worksheet)wbook.ActiveSheet;
try
{
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
wsheet.Cells[1, i + 1] = ds.Tables[0].Columns[i].ColumnName;
}
foreach (DataRow row in ds.Tables[0].Rows)
{
rowindex++;
columnindex = 0;
foreach (DataColumn col in ds.Tables[0].Columns)
{
columnindex++;
wsheet.Cells[rowindex + 1, columnindex] = row[col.ColumnName];
}
}
}
catch (Exception ex)
{
String err = ex.Message;
}
wapp.UserControl = true;
}
WorkBook.SaveAs()
への引数はすべてオプションですが、必要に応じて、ほとんどの場合にType.Missing
を使用できます。
典型的な呼び出しは次のようになります。
wbook.SaveAs("c:\\temp\\blah", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing,
false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wbook.Close();
ファイル拡張子を含めなかったことに注意してください。 Excelが設定します。
Workbook.SaveAsメソッド(Microsoft.Office.Tools.Excel)| Microsoft Docs は、各引数について説明します。
ConflictResolution
をXlSaveConflictResolution.xlLocalSessionChanges
に追加
そして、アプリケーションのDisplayAlerts
プロパティをfalse
に設定して、ウィンドウが表示されないようにします。
m_xlApp.DisplayAlerts = false;
// Quit Excel and clean up.
m_xlWorkbook.SaveAs(Filename: m_xlFilePath, FileFormat: excelFileExtension,
Password: false, ReadOnlyRecommended: XlSaveAsAccessMode.xlNoChange,
ConflictResolution: XlSaveConflictResolution.xlLocalSessionChanges);
m_xlWorkbook.Close();
詳細については、「 XlSaveConflictResolution列挙型(Microsoft.Office.Interop.Excel)| Microsoft Docs 」を参照してください。
ブックのSaveAs
メソッドを呼び出してみてください。多くのパラメータについては、Type.Missing
最初のパラメーター以外のすべてのパラメーター(ファイル名)。
wapp.DisplayAlerts = false;
設定 Application.DisplayAlerts
false
のプロパティは、そのすべてのワークブックのすべてのアラートの表示を停止します。
wbook.SaveAs(...);
使用する open xml sdk
自動化の代わりにドキュメントを生成します。それははるかに信頼できます。
DisplayAlertsプロパティを使用します。その非常にシンプルで高速です。
private void SaveAs(Excel.Workbook WorkBook, string FileName)
{
m_Saving = true;
try
{
if (Global.CreatingCopy)
this.ExcelApp.DisplayAlerts = false;
WorkBook.SaveAs(FileName);
}
finally
{
m_Saving = false;
if (this.ExcelApp.DisplayAlerts == false)
this.ExcelApp.DisplayAlerts = true;
}
}
ファイルを保存するときに、Excelにファイルの種類を定義させないでください。形式が変更される可能性があるためです。
元のドキュメントが.xlsで、現在のユーザーがOffice 2013のデフォルトの形式である.xlsxを持っている場合、Excelはファイルを.xlsxに変換し、Excel 2010以降ではユーザーはファイルを開くことができません。