在域中C#2008导出EXCEL出错 ,如下是导出代码,不知道是否跟权限有关,如果不在域中却是可以的.
private void btnExcel_Click(object sender, EventArgs e)
{
string fileName = "Book1";
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
//取消
int r = 0;
if (saveFileName.IndexOf(":") < 0)
{
return;
} //创建Excel对象
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel");
return;
} Excel.Workbooks workbooks = xlApp.Workbooks;
//工作簿
Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
//Sheet
Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //写入Excel第一行
Excel.Range Range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 3]);//Range对象
Range.MergeCells = true;//合并单元格
worksheet.Cells[1, 1] = "销售订单展开表";//单元格内文本
//Range.Font.Name = "黑体";//字体
Range.Font.Size = 12;//字体大小 //标题格式
Microsoft.Office.Interop.Excel.Range Range2 = worksheet.get_Range("A2", "C2");
//Range2.Font.Name = "黑体";
Range2.Font.Size = 12;
Range2.Interior.Pattern = Excel.XlSortType.xlSortValues;
//上边框加粗
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //写入标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
worksheet.Cells[2, i + 1] = dataGridView1.Columns[i].HeaderText;
}
//写入数值
for (r = 0; r < dataGridView1.Rows.Count; r++)
{
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
worksheet.Cells[r + 3, i + 1] = dataGridView1.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
//保存
workbook.Saved = true;
//获得保存路径
workbook.SaveCopyAs(saveFileName);
object TM = System.Type.Missing;
Excel.Application excel = new Excel.Application();
//打开已经写入值的EXCEL进行操作
//Excel.Workbook book = excel.Application.Workbooks.Add(saveFileName);
//Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];
//要汇总的列
//int[] totile = new int[1] { 3 };
//以第二列分组汇总
//sheet.get_Range(sheet.Cells[2, 1], sheet.Cells[r + 3, 3]).Subtotal(2, Excel.XlConsolidationFunction.xlSum, totile, TM, TM, Excel.XlSummaryRow.xlSummaryBelow);
//获得写入的总行
//int count = sheet.UsedRange.Rows.Count;
//获得A、B、C列
//string A = "A" + count;
//string B = "B" + count;
//string C = "C" + count;
//Excel.Range RangeA = sheet.get_Range("A2", A);
//Excel.Range RangeB = sheet.get_Range("B2", B);
//Excel.Range RangeC = sheet.get_Range("C2", C); //字体
//RangeA.Font.Name = "Arial";
//字体大小
//RangeA.Font.Size = 8;
//RangeA.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
//RangeA.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
//RangeC.NumberFormatLocal = "#,##0.00_);(#,##0.00)";//格式
//RangeC.Font.ColorIndex = 5;//字体颜色
//边框
//RangeC.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
//RangeC.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
//sheet.get_Range(A, C).Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //是否打开
excel.Visible = true;
//保存
//book.Saved = true;
//book.SaveCopyAs(saveFileName);
excel.Quit();
xlApp.Quit();
if (excel != null)
{
excel.Quit();
}
if (xlApp != null)
{
xlApp.Quit();
}
GC.Collect();//强行销毁
//MessageBox.Show("Excel导出成功!" + "共写入" + count + "行");
MessageBox.Show("Excel导出成功!"); }
private void btnExcel_Click(object sender, EventArgs e)
{
string fileName = "Book1";
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
//取消
int r = 0;
if (saveFileName.IndexOf(":") < 0)
{
return;
} //创建Excel对象
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的电脑未安装Excel");
return;
} Excel.Workbooks workbooks = xlApp.Workbooks;
//工作簿
Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
//Sheet
Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //写入Excel第一行
Excel.Range Range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, 3]);//Range对象
Range.MergeCells = true;//合并单元格
worksheet.Cells[1, 1] = "销售订单展开表";//单元格内文本
//Range.Font.Name = "黑体";//字体
Range.Font.Size = 12;//字体大小 //标题格式
Microsoft.Office.Interop.Excel.Range Range2 = worksheet.get_Range("A2", "C2");
//Range2.Font.Name = "黑体";
Range2.Font.Size = 12;
Range2.Interior.Pattern = Excel.XlSortType.xlSortValues;
//上边框加粗
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
Range2.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //写入标题
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
worksheet.Cells[2, i + 1] = dataGridView1.Columns[i].HeaderText;
}
//写入数值
for (r = 0; r < dataGridView1.Rows.Count; r++)
{
for (int i = 0; i < dataGridView1.ColumnCount; i++)
{
worksheet.Cells[r + 3, i + 1] = dataGridView1.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
//保存
workbook.Saved = true;
//获得保存路径
workbook.SaveCopyAs(saveFileName);
object TM = System.Type.Missing;
Excel.Application excel = new Excel.Application();
//打开已经写入值的EXCEL进行操作
//Excel.Workbook book = excel.Application.Workbooks.Add(saveFileName);
//Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];
//要汇总的列
//int[] totile = new int[1] { 3 };
//以第二列分组汇总
//sheet.get_Range(sheet.Cells[2, 1], sheet.Cells[r + 3, 3]).Subtotal(2, Excel.XlConsolidationFunction.xlSum, totile, TM, TM, Excel.XlSummaryRow.xlSummaryBelow);
//获得写入的总行
//int count = sheet.UsedRange.Rows.Count;
//获得A、B、C列
//string A = "A" + count;
//string B = "B" + count;
//string C = "C" + count;
//Excel.Range RangeA = sheet.get_Range("A2", A);
//Excel.Range RangeB = sheet.get_Range("B2", B);
//Excel.Range RangeC = sheet.get_Range("C2", C); //字体
//RangeA.Font.Name = "Arial";
//字体大小
//RangeA.Font.Size = 8;
//RangeA.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
//RangeA.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
//RangeC.NumberFormatLocal = "#,##0.00_);(#,##0.00)";//格式
//RangeC.Font.ColorIndex = 5;//字体颜色
//边框
//RangeC.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
//RangeC.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;
//sheet.get_Range(A, C).Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom).Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick; //是否打开
excel.Visible = true;
//保存
//book.Saved = true;
//book.SaveCopyAs(saveFileName);
excel.Quit();
xlApp.Quit();
if (excel != null)
{
excel.Quit();
}
if (xlApp != null)
{
xlApp.Quit();
}
GC.Collect();//强行销毁
//MessageBox.Show("Excel导出成功!" + "共写入" + count + "行");
MessageBox.Show("Excel导出成功!"); }
未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version=11.0.0.0,...