我已經創建了一個函式來保存資料從datagridview到EXCEL檔案。
保存的函式:
try
{
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application()。
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing)。
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
app.Visible = true;
worksheet = workbook.Sheet["Sheet1"]。
worksheet = workbook.ActiveSheet;
worksheet.Name = "Records";
try; try?
{
for (int i = 0; i < dataGridView2.Columns.Count; i )
{
worksheet.Cells[1, i 1] = dataGridView2.Columns[i].HeaderText;
}
for (int i = 0; i < dataGridView2.Rows.Count; i )
{
for (int j = 0; j < dataGridView2.Columns.Count; j )
{
if (dataGridView2.Rows[i].Cells[j].Value != null)
{
worksheet.Cells[i 2, j 1] = dataGridView2.Rows[i] .Cells[j].Value.ToString()。
}
else[/span
{
worksheet.Cells[i 2, j 1] = ""/span>;
}
}
}
//Getting the location and file name of the excel to save from user.
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Filter = "Excel檔案(*.xlsx)|*.xlsx|所有檔案(*.*)|*.*"。
saveDialog.FilterIndex = 2;
if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
workbook.SaveAs(saveDialog.FileName)。
MessageBox.Show("匯出成功", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information)。
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message)。
}
最終
{
app.Quit()。
workbook = null;
worksheet = null;
}
}
catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
我試著在我的第二臺電腦上運行它,在那里安裝了 :
我需要什么?
我需要在代碼中做什么改動才能在兩個版本中都作業?
我正在尋找一個例子,它可以做同樣的事情,但在每個辦公室安裝上都可以使用。
當我試圖在第二臺電腦上運行時,我有這樣的錯誤。

uj5u.com熱心網友回復:
如果你不一定要使用MS Office組件,那么我建議使用EPPlus庫來代替。
string saveasFileName = .....
using (var package = new ExcelPackage()
{
using (var worksheet = package.Workbook.Worksheets.Add("Records"/span>)
{
worksheet.Cells[1, 1].Value = "Records from dataGridView2:"/span>;
worksheet.Cells[1, 1].Style.Font.Bold = true;
// column headers
for (int i = 0; i < dataGridView2.Columns.Count; i )
{
worksheet.Cells[2, i 1].Value = dataGridView2.Columns[i].HeaderText。
}
//實際資料。
for (int i = 0; i < dataGridView2.Rows.Count; i )
{
for (int j = 0; j < dataGridView2.Columns.Count; j )
{
//...填充作業表...
worksheet.Cells[i 3, j 1].Value = dataGridView2.Rows[i].Cells[j].Value?.ToString()?" ;
}
}
//save; }
package.SaveAs(saveasFileName)。
}
我在https://github.com/siccolo/EppPlus_CreateExcel/blob/master/Excel.cs
上有一個例子。uj5u.com熱心網友回復:
這并不是直接回答你的代碼為什么會拋出這個錯誤。但作為一個對我有用的替代方法,可能值得一試?我使用了Nuget的'ClosedXML'包... 可能還有其他的選擇,比如 "Yob's reply",我相信它們也能正常作業。
using ClosedXML.Excel。
然后要保存資料:
SaveFileDialog saveFile1 = new SaveFileDialog()。
saveFile1.Filter = "Excel file|*.xlsx"。
saveFile1.Title = "保存結果為Excel電子表格"。
saveFile1.FileName = title " -" DateTime.Now.ToString("yyyyMMdd") " .xlsx"。
if (saveFile1.ShowDialog() == DialogResult.OK)
{
var wb = new XLWorkbook()。
var ws = wb.Worksheets.Add(data, title);
wb.SaveAs(saveFile1.FileName)。
}
'data'是datatable,所以你需要先將datagridview轉換成datable。正如我所說,這不是對你現有代碼的回答,而是一個可能的替代方案,對我來說是可行的:) 祝你好運。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/333671.html
標籤:


