求一个方法,给excel文件指定的位置写数据。急求!!!!!!!十万火急 如题格式为 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ((Excel.Range)ThisSheet.Cells[3, 2]).FormulaR1C1 = "疏影横斜水清浅 暗香浮动月黄昏"; 有什么问题就一个个的Cell的写呗没啥难度啊http://dotnet.aspx.cc/article/4eb79f05-b9a4-4e8a-836f-864393f40405/read.aspxhttp://tmsoft.lsxy.com/index.php?load=read&id=415看看这个参考一下 首先 ,添加引用Excel组建。其次,Excel.Application oExcel=new Excel.Application();//定義。 Excel.Workbooks oBooks; Excel.Workbook oBook; Excel.Worksheet oSheets; oBooks = (Excel.Workbooks)oExcel.Workbooks; oBooks.Open(sTemplate,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);//打開模板。 oBook =(Excel.Workbook)oBooks.get_Item(1);//以下操作Excel的頁首,這個大家用的比較少吧,是列印是需要的。 oSheets =(Excel.Worksheet) oBook.Worksheets[1]; oSheets.PageSetup.PrintTitleRows = ""; oSheets.PageSetup.PrintTitleColumns = ""; oSheets.PageSetup.PrintArea = ""; oSheets.PageSetup.LeftHeader=""; string str="\""; string fontstr="&"+str+"Times New Roman,粗體"+str+"&13"; string tab="&"+str+"Times New Roman,粗體"+str+"&12"; oSheets.PageSetup.CenterHeader=fontstr+"Unimicron HSF Test Report\n欣興電子HSF 測試報告\n"; oSheets.PageSetup.RightHeader=tab+"Test Date : "+this.TxtDate.Value.Trim(); oSheets.PageSetup.LeftFooter=""; oSheets.PageSetup.CenterFooter=""; oSheets.PageSetup.RightFooter =""; //以下是動態添充數據。 for (int i=0;i<ds.Tables[0].Rows.Count;i++) { if (i>0) { Excel.Range range; range = (Excel.Range)oSheets.Rows[5,missing];//獲取行。 range.Insert(Excel.XlInsertShiftDirection.xlShiftDown,missing);//在此行前插入行。 range = (Excel.Range)oSheets.Rows[5,missing]; range.Font.Bold=false;//字體不為粗體 range.Font.Color="000000";//字體顏色。 range = oSheets.get_Range("E5", "F5");//獲得第五行多列. range.Merge(missing);//合並蓋多列。 range.Interior.ColorIndex=2;//填充色。 range = oSheets.get_Range("G5", "H5"); range.Merge(missing); range.Interior.ColorIndex=2; range = oSheets.get_Range("I5", "J5"); range.Merge(missing); range.Interior.ColorIndex=2; range = oSheets.get_Range("K5", "L5"); range.Merge(missing); range.Interior.ColorIndex=2; range = oSheets.get_Range("M5", "N5"); range.Merge(missing); range.Interior.ColorIndex=2; range = oSheets.get_Range("O5", "P5"); range.Merge(missing); range.Interior.ColorIndex=2; } int n=5; for (int j=0;j<ds.Tables[0].Columns.Count;j++) { if(j<4) oSheets.Cells[5,j+1]=ds.Tables[0].Rows[i].ItemArray[j]; else if(j>3 && j<10) { oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j]; //填數據。 n=n+2; } else { oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j]; n=n+1; } } } try { if(File.Exists(savepath)) { File.Delete(savepath); }//Excel.XlSaveAsAccessMode.xlNoChange oSheets.SaveAs(savepath,missing,missing,missing,missing,missing,missing,missing,missing,missing);//存儲Excel檔案。 return savepath; } catch (Exception ex) { ex.Message.ToString(); return savepath; } finally {//釋放。 oExcel.Quit(); oBooks.Close(); GC.Collect(); } //以上為打開模板,以下是動態生成以及畫統計圖。Excel.Application ExcelApp=null; //定義對象。Excel.Workbook ExcelWorkBook=null; //定義工作薄。Excel.Worksheet ExcelWorkSheet=null; //定義sheet。object miss=System.Reflection.Missing.Value;//定義MISS值。ExcelApp=new Excel.Application();ExcelWorkBook=(Excel.Workbook)ExcelApp.Workbooks.Add(true);ExcelWorkSheet=(Excel.Worksheet)ExcelWorkBook.Worksheets[1];ExcelWorkBook.Charts.Add(miss,miss,1,miss); //創建圖表.ExcelWorkBook.ActiveChart.ChartType =Excel.XlChartType.xlColumnStacked; //圖表類型ExcelWorkBook.ActiveChart.SetSourceData((Excel.Range)ExcelWorkSheet.get_Range ("A1",""+name+""),Excel.XlRowCol.xlRows); //獲取資料來源ExcelWorkBook.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject,"Sheet1"); //存放圖表位置ExcelWorkBook.ActiveChart.HasLegend =true;ExcelWorkSheet.Shapes._Default("圖表 1").IncrementLeft(float.Parse("-180.75"));//設置圖表位置ExcelWorkSheet.Shapes._Default("圖表 1").IncrementTop(float.Parse("-108.2"));//設置圖表位置ExcelWorkSheet.Shapes._Default("圖表 1").ScaleWidth(float.Parse("1.90"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表寬度ExcelWorkSheet.Shapes._Default("圖表 1").ScaleHeight(float.Parse("1.12"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表高度((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).Select();//副坐標用%顯示((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).TickLabels.NumberFormatLocal="0.0%";((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).MaximumScale=1;((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).TickLabels.NumberFormatLocal="0.0%";ExcelWorkBook.ActiveChart.ChartArea.Select();//添加標題ExcelWorkBook.ActiveChart.HasTitle=true;ExcelWorkBook.ActiveChart.ChartTitle.Text="FC-BGA2231037(3+2+3) Bump Yield";((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).HasTitle=true;((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).AxisTitle.Text="單項不良率(ppm)";((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).HasTitle=true;((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).AxisTitle.Text="Bump 良率(%)";.............還有很多可以自己揣摩。osheet.get_Range(range2,(Excel.Range)osheet.Cells[3,i]).Merge(true);合並單元格的另一方法,但切記要是縱向合並時Merge(true);中的參數要改為miss否則無法合並。//----------------------關閉ExcelProcess-------------------- private void RealeseObj() { ExcelWorkBook.Close(false,null,null); ExcelApp.Quit(); if(ExcelApp!=null) { System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelApp);} if(ExcelWorkBook!=null) { System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkBook);} if(ExcelWorkSheet!=null) { System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkSheet);} ExcelWorkSheet= null; ExcelWorkBook= null; ExcelApp = null; GC.Collect(); } 给你个简单的例子:(要添加对Excel的引用 using Excel=Microsoft.Office.Interop.Excel;) Excel.Application appExcel; appExcel = new Microsoft.Office.Interop.Excel.Application();//打开Excel Appliction Excel.Workbook workbookData; Excel.Worksheet worksheetData; workbookData = appExcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath + @"\Pattern.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//打开指定路径的Excel #region Cover worksheetData = (Excel.Worksheet)workbookData.Sheets[1];//获取打开的Excel的第一个Sheet worksheetData.Cells[10, 4] = DateTime.Now.ToString("yyyy/MM/dd");//向Sheet的第10行第4列写东西 workbookData.SaveAs(strFileName,Missing.Value,Missing.Value,Missing.Value, Missing.Value,Missing.Value,Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);//另存Excel appExcel.Quit();//关闭Excel Appliction 有什么方法能反过来获取range的坐标呢?比如,private void Application_SheetChange(object sender, Excel.Range Target) { //在这里,我想知道这个Target的行坐标top,button和列坐标left和right }谢谢高手回答 抽像类的问题 帮我看看这样的报表怎么设计?? 关于C#调试的应该小错误 急,高手帮帮忙!双缓存绘图时图像不能显示 企业面试题,急救高分相送。 我创建了一个资源文件myIco.resources,不知如何加入到窗体中?? 急!请好心人指教:水晶报表小问题 C# 如何获取进程控制下的所有窗口句柄 怎样将字符串转换成XML文档? ado.net的问题 C#。net2005和c#。net2008区别大吗? c#:怎么调用js中的返回值
就一个个的Cell的写呗
没啥难度啊http://dotnet.aspx.cc/article/4eb79f05-b9a4-4e8a-836f-864393f40405/read.aspx
http://tmsoft.lsxy.com/index.php?load=read&id=415
看看这个参考一下
其次,Excel.Application oExcel=new Excel.Application();//定義。
Excel.Workbooks oBooks;
Excel.Workbook oBook;
Excel.Worksheet oSheets;
oBooks = (Excel.Workbooks)oExcel.Workbooks;
oBooks.Open(sTemplate,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);//打開模板。
oBook =(Excel.Workbook)oBooks.get_Item(1);//以下操作Excel的頁首,這個大家用的比較少吧,是列印是需要的。
oSheets =(Excel.Worksheet) oBook.Worksheets[1];
oSheets.PageSetup.PrintTitleRows = "";
oSheets.PageSetup.PrintTitleColumns = "";
oSheets.PageSetup.PrintArea = "";
oSheets.PageSetup.LeftHeader="";
string str="\"";
string fontstr="&"+str+"Times New Roman,粗體"+str+"&13";
string tab="&"+str+"Times New Roman,粗體"+str+"&12";
oSheets.PageSetup.CenterHeader=fontstr+"Unimicron HSF Test Report\n欣興電子HSF 測試報告\n";
oSheets.PageSetup.RightHeader=tab+"Test Date : "+this.TxtDate.Value.Trim();
oSheets.PageSetup.LeftFooter="";
oSheets.PageSetup.CenterFooter="";
oSheets.PageSetup.RightFooter ="";
//以下是動態添充數據。 for (int i=0;i<ds.Tables[0].Rows.Count;i++)
{
if (i>0)
{
Excel.Range range;
range = (Excel.Range)oSheets.Rows[5,missing];//獲取行。
range.Insert(Excel.XlInsertShiftDirection.xlShiftDown,missing);//在此行前插入行。
range = (Excel.Range)oSheets.Rows[5,missing];
range.Font.Bold=false;//字體不為粗體
range.Font.Color="000000";//字體顏色。
range = oSheets.get_Range("E5", "F5");//獲得第五行多列.
range.Merge(missing);//合並蓋多列。
range.Interior.ColorIndex=2;//填充色。
range = oSheets.get_Range("G5", "H5");
range.Merge(missing);
range.Interior.ColorIndex=2;
range = oSheets.get_Range("I5", "J5");
range.Merge(missing);
range.Interior.ColorIndex=2;
range = oSheets.get_Range("K5", "L5");
range.Merge(missing);
range.Interior.ColorIndex=2;
range = oSheets.get_Range("M5", "N5");
range.Merge(missing);
range.Interior.ColorIndex=2;
range = oSheets.get_Range("O5", "P5");
range.Merge(missing);
range.Interior.ColorIndex=2;
}
int n=5;
for (int j=0;j<ds.Tables[0].Columns.Count;j++)
{
if(j<4) oSheets.Cells[5,j+1]=ds.Tables[0].Rows[i].ItemArray[j];
else if(j>3 && j<10)
{
oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j]; //填數據。
n=n+2;
}
else
{
oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j];
n=n+1;
}
}
}
try
{
if(File.Exists(savepath))
{
File.Delete(savepath);
}//Excel.XlSaveAsAccessMode.xlNoChange
oSheets.SaveAs(savepath,missing,missing,missing,missing,missing,missing,missing,missing,missing);//存儲Excel檔案。
return savepath;
}
catch (Exception ex)
{
ex.Message.ToString();
return savepath;
}
finally
{//釋放。
oExcel.Quit();
oBooks.Close();
GC.Collect();
}
//以上為打開模板,以下是動態生成以及畫統計圖。Excel.Application ExcelApp=null; //定義對象。
Excel.Workbook ExcelWorkBook=null; //定義工作薄。
Excel.Worksheet ExcelWorkSheet=null; //定義sheet。
object miss=System.Reflection.Missing.Value;//定義MISS值。ExcelApp=new Excel.Application();
ExcelWorkBook=(Excel.Workbook)ExcelApp.Workbooks.Add(true);
ExcelWorkSheet=(Excel.Worksheet)ExcelWorkBook.Worksheets[1];ExcelWorkBook.Charts.Add(miss,miss,1,miss); //創建圖表.
ExcelWorkBook.ActiveChart.ChartType =Excel.XlChartType.xlColumnStacked; //圖表類型
ExcelWorkBook.ActiveChart.SetSourceData((Excel.Range)ExcelWorkSheet.get_Range ("A1",""+name+""),Excel.XlRowCol.xlRows); //獲取資料來源
ExcelWorkBook.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject,"Sheet1"); //存放圖表位置
ExcelWorkBook.ActiveChart.HasLegend =true;ExcelWorkSheet.Shapes._Default("圖表 1").IncrementLeft(float.Parse("-180.75"));//設置圖表位置
ExcelWorkSheet.Shapes._Default("圖表 1").IncrementTop(float.Parse("-108.2"));//設置圖表位置
ExcelWorkSheet.Shapes._Default("圖表 1").ScaleWidth(float.Parse("1.90"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表寬度
ExcelWorkSheet.Shapes._Default("圖表 1").ScaleHeight(float.Parse("1.12"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表高度((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).Select();//副坐標用%顯示
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).TickLabels.NumberFormatLocal="0.0%";
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).MaximumScale=1;
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).TickLabels.NumberFormatLocal="0.0%";
ExcelWorkBook.ActiveChart.ChartArea.Select();//添加標題
ExcelWorkBook.ActiveChart.HasTitle=true;
ExcelWorkBook.ActiveChart.ChartTitle.Text="FC-BGA2231037(3+2+3) Bump Yield";
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).HasTitle=true;
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).AxisTitle.Text="單項不良率(ppm)";
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).HasTitle=true;
((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).AxisTitle.Text="Bump 良率(%)";.............還有很多可以自己揣摩。osheet.get_Range(range2,(Excel.Range)osheet.Cells[3,i]).Merge(true);合並單元格的另一方法,但切記要是縱向合並時Merge(true);中的參數要改為miss否則無法合並。//----------------------關閉ExcelProcess--------------------
private void RealeseObj()
{
ExcelWorkBook.Close(false,null,null);
ExcelApp.Quit();
if(ExcelApp!=null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelApp);}
if(ExcelWorkBook!=null)
{ System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkBook);}
if(ExcelWorkSheet!=null)
{ System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkSheet);}
ExcelWorkSheet= null;
ExcelWorkBook= null;
ExcelApp = null;
GC.Collect();
}
Excel.Application appExcel; appExcel = new Microsoft.Office.Interop.Excel.Application();//打开Excel Appliction
Excel.Workbook workbookData;
Excel.Worksheet worksheetData; workbookData = appExcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath + @"\Pattern.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//打开指定路径的Excel #region Cover
worksheetData = (Excel.Worksheet)workbookData.Sheets[1];//获取打开的Excel的第一个Sheet worksheetData.Cells[10, 4] = DateTime.Now.ToString("yyyy/MM/dd");//向Sheet的第10行第4列写东西
workbookData.SaveAs(strFileName,Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Excel.XlSaveAsAccessMode.xlNoChange,
Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);//另存Excel
appExcel.Quit();//关闭Excel Appliction
比如,private void Application_SheetChange(object sender, Excel.Range Target)
{
//在这里,我想知道这个Target的行坐标top,button和列坐标left和right
}
谢谢高手回答