我用c#做的开发,怎么出现了一个这样的bug?大家看看哟~~~

狼里格东 2009-12-22 04:52:58
1、我将一些课程(包括ID、名字、类型,子类型,描述等等),导出作为Excel文件,这个function是没错的(大家可以不用管我怎么实现的,因为问题不是这儿)。

2、当我点Export 按钮时,出现了一下错误

Not enough storage is available to complete this operation. (Exception from HRESULT: 0x8007000E (E_OUTOFMEMORY))
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) at Microsoft.Office.Interop.Excel.Range.set__Default(Object RowIndex, Object ColumnIndex, Object ) at ESMD.BO.Program.Export.btnExport_Click(Object sender, EventArgs e) in C:\Visual Studio Projects\YWCA\ESMD.BO\Program\Export.aspx.cs:line 285


3、按道理说,出现 Not enough storage is available to complete this operation. (Exception from HRESULT: 0x8007000E 这个错误,是因为没有显式地调用相关 SqlCeCommand 对象的 Dispose 方法。

4、可是,我已经在code 里面调用了,是我调用的位置不对还是什么原因呢?

期望大家帮忙看看...共同学习学习...





...全文
515 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
狼里格东 2009-12-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liangzhl 的回复:]
给你一个,直接用就可以了

private void Export2Excel(DataGridView datagridview, bool captions)
        {
            object objApp_Late;
            object objBook_Late;
            object objBooks_Late;
            object objSheets_Late;
            object objSheet_Late;
            object objRange_Late;
            object[] Parameters;

            string[] headers = new string[datagridview.DisplayedColumnCount(true)];
            string[] columns = new string[datagridview.DisplayedColumnCount(true)];
            string[] colName = new string[datagridview.DisplayedColumnCount(true)];

            int i = 0;
            int c = 0;
            int m = 0;

            for (c = 0; c < datagridview.Columns.Count; c++)
            {
                for (int j = 0; j < datagridview.Columns.Count; j++)
                {
                    DataGridViewColumn tmpcol = datagridview.Columns[j];
                    if (tmpcol.DisplayIndex == c)
                    {
                        if (tmpcol.Visible) //不显示的隐藏列初始化为tag=0
                        {
                            headers[c - m] = tmpcol.HeaderText;
                            i = c - m + 65;
                            columns[c - m] = Convert.ToString((char)i);
                            colName[c - m] = tmpcol.Name;
                        }
                        else
                        {
                            m++;
                        }
                        break;
                    }
                }
            }

            try
            {
                // Get the class type and instantiate Excel.
                Type objClassType;
                objClassType = Type.GetTypeFromProgID("Excel.Application");
                objApp_Late = Activator.CreateInstance(objClassType);
                //Get the workbooks collection.
                objBooks_Late = objApp_Late.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objApp_Late, null);
                //Add a new workbook.
                objBook_Late = objBooks_Late.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objBooks_Late, null);
                //Get the worksheets collection.
                objSheets_Late = objBook_Late.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, objBook_Late, null);
                //Get the first worksheet.
                Parameters = new Object[1];
                Parameters[0] = 1;
                objSheet_Late = objSheets_Late.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objSheets_Late, Parameters);

                if (captions)
                {

                    // Create the headers in the first row of the sheet
                    for (c = 0; c < datagridview.DisplayedColumnCount(true); c++)
                    {
                        //Get a range object that contains cell.
                        Parameters = new Object[2];
                        Parameters[0] = columns[c] + "1";
                        Parameters[1] = Missing.Value;
                        objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, Parameters);
                        //Write Headers in cell.
                        Parameters = new Object[1];
                        Parameters[0] = headers[c];
                        objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objRange_Late, Parameters);
                    }
                }

                // Now add the data from the grid to the sheet starting in row 2
                for (i = 0; i < datagridview.RowCount; i++)
                {
                    c = 0;
                    foreach (string txtCol in colName)
                    {
                        DataGridViewColumn col = datagridview.Columns[txtCol];
                        if (col.Visible)
                        {
                            //Get a range object that contains cell.
                            Parameters = new Object[2];
                            Parameters[0] = columns[c] + Convert.ToString(i + 2);
                            Parameters[1] = Missing.Value;
                            objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, Parameters);
                            //Write Headers in cell.
                            Parameters = new Object[1];
                            //Parameters[0] = datagridview.Rows[i].Cells[headers[c]].Value.ToString();
                            Parameters[0] = datagridview.Rows[i].Cells[col.Name].Value.ToString();
                            objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objRange_Late, Parameters);
                            c++;
                        }

                    }
                }

                //Return control of Excel to the user.
                Parameters = new Object[1];
                Parameters[0] = true;
                objApp_Late.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
                null, objApp_Late, Parameters);
                objApp_Late.GetType().InvokeMember("UserControl", BindingFlags.SetProperty,
                null, objApp_Late, Parameters);
            }
            catch (Exception theException)
            {
                String errorMessage;
                errorMessage = "Error: ";
                errorMessage = String.Concat(errorMessage, theException.Message);
                errorMessage = String.Concat(errorMessage, " Line: ");
                errorMessage = String.Concat(errorMessage, theException.Source);

                MessageBox.Show(errorMessage, "Error");
            }
        }

[/Quote]

哥们,能解释下不?
马老虎 2009-12-25
  • 打赏
  • 举报
回复
只能帮顶了!
wupdiy 2009-12-25
  • 打赏
  • 举报
回复
眼睛冒星星了....
yongningzh 2009-12-25
  • 打赏
  • 举报
回复
yun
stormxs 2009-12-25
  • 打赏
  • 举报
回复
五个星星算什么???
wildoracle 2009-12-24
  • 打赏
  • 举报
回复
444444444
liangzhl 2009-12-24
  • 打赏
  • 举报
回复
给你一个,直接用就可以了

private void Export2Excel(DataGridView datagridview, bool captions)
{
object objApp_Late;
object objBook_Late;
object objBooks_Late;
object objSheets_Late;
object objSheet_Late;
object objRange_Late;
object[] Parameters;

string[] headers = new string[datagridview.DisplayedColumnCount(true)];
string[] columns = new string[datagridview.DisplayedColumnCount(true)];
string[] colName = new string[datagridview.DisplayedColumnCount(true)];

int i = 0;
int c = 0;
int m = 0;

for (c = 0; c < datagridview.Columns.Count; c++)
{
for (int j = 0; j < datagridview.Columns.Count; j++)
{
DataGridViewColumn tmpcol = datagridview.Columns[j];
if (tmpcol.DisplayIndex == c)
{
if (tmpcol.Visible) //不显示的隐藏列初始化为tag=0
{
headers[c - m] = tmpcol.HeaderText;
i = c - m + 65;
columns[c - m] = Convert.ToString((char)i);
colName[c - m] = tmpcol.Name;
}
else
{
m++;
}
break;
}
}
}

try
{
// Get the class type and instantiate Excel.
Type objClassType;
objClassType = Type.GetTypeFromProgID("Excel.Application");
objApp_Late = Activator.CreateInstance(objClassType);
//Get the workbooks collection.
objBooks_Late = objApp_Late.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, objApp_Late, null);
//Add a new workbook.
objBook_Late = objBooks_Late.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objBooks_Late, null);
//Get the worksheets collection.
objSheets_Late = objBook_Late.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, null, objBook_Late, null);
//Get the first worksheet.
Parameters = new Object[1];
Parameters[0] = 1;
objSheet_Late = objSheets_Late.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, objSheets_Late, Parameters);

if (captions)
{

// Create the headers in the first row of the sheet
for (c = 0; c < datagridview.DisplayedColumnCount(true); c++)
{
//Get a range object that contains cell.
Parameters = new Object[2];
Parameters[0] = columns[c] + "1";
Parameters[1] = Missing.Value;
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, Parameters);
//Write Headers in cell.
Parameters = new Object[1];
Parameters[0] = headers[c];
objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objRange_Late, Parameters);
}
}

// Now add the data from the grid to the sheet starting in row 2
for (i = 0; i < datagridview.RowCount; i++)
{
c = 0;
foreach (string txtCol in colName)
{
DataGridViewColumn col = datagridview.Columns[txtCol];
if (col.Visible)
{
//Get a range object that contains cell.
Parameters = new Object[2];
Parameters[0] = columns[c] + Convert.ToString(i + 2);
Parameters[1] = Missing.Value;
objRange_Late = objSheet_Late.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, objSheet_Late, Parameters);
//Write Headers in cell.
Parameters = new Object[1];
//Parameters[0] = datagridview.Rows[i].Cells[headers[c]].Value.ToString();
Parameters[0] = datagridview.Rows[i].Cells[col.Name].Value.ToString();
objRange_Late.GetType().InvokeMember("Value", BindingFlags.SetProperty, null, objRange_Late, Parameters);
c++;
}

}
}

//Return control of Excel to the user.
Parameters = new Object[1];
Parameters[0] = true;
objApp_Late.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
null, objApp_Late, Parameters);
objApp_Late.GetType().InvokeMember("UserControl", BindingFlags.SetProperty,
null, objApp_Late, Parameters);
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);

MessageBox.Show(errorMessage, "Error");
}
}
真相重于对错 2009-12-24
  • 打赏
  • 举报
回复
存储空间不足,无法完成此操作。
fellatioyzx 2009-12-24
  • 打赏
  • 举报
回复
好长啊
狼里格东 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 emyueguang 的回复:]
晕啊,这么长的文章,看不懂啊

楼主还是到MSDN上面去看看吧,那边的斑竹素质比较的高,应该能够及时的解答你的问题
[/Quote]

大哥您还真别说,去了Microsoft 的论坛,发帖子问了。

问得郁闷...除了管理员回了一下。没其他人了。

估计是没啥人气。补充句,我去的是Microsoft的官方论坛中文版

这是链接http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/0d1a06e1-c1a1-4809-a737-5bc0967545ca
yang_xingxing88 2009-12-24
  • 打赏
  • 举报
回复
up
狼里格东 2009-12-24
  • 打赏
  • 举报
回复
两天了,有人帮忙瞧瞧不?
flyinthesky_new 2009-12-22
  • 打赏
  • 举报
回复
最好自己先仔细的研究下比较好啊
狼里格东 2009-12-22
  • 打赏
  • 举报
回复
补完整呢个code




// --- set Data ---
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < Column.Length; j++)
{
worksheetProgram.Cells[i + 2, 1 + j] = ds.Tables[0].Rows[i][Column[j]].ToString();
}
}

// --- Set DropDownList on Excel ---
setExcelCellsDropDownList(ref worksheetProgram, "=CourseType", worksheetProgram.Cells[2, 2], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 2]);
setExcelCellsDropDownList(ref worksheetProgram, "=Catgeory", worksheetProgram.Cells[2, 3], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 3]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 16], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 16]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 17], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 17]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 18], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 18]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 19], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 19]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 20], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 20]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 21], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 21]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 22], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 22]);
setExcelCellsDropDownList(ref worksheetProgram, "=HeldOutside", worksheetProgram.Cells[2, 23], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 23]);
setExcelCellsDropDownList(ref worksheetProgram, "=AllowDropIn", worksheetProgram.Cells[2, 25], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 25]);
setExcelCellsDropDownList(ref worksheetProgram, "=Term", worksheetProgram.Cells[2, 28], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 28]);
setExcelCellsDropDownList(ref worksheetProgram, "=Room", worksheetProgram.Cells[2, 31], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 31]);
setExcelCellsDropDownList(ref worksheetProgram, "=WebStatus", worksheetProgram.Cells[2, 30], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 30]);
setExcelCellsDropDownList(ref worksheetProgram, "=MemberOnly", worksheetProgram.Cells[2, 33], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 33]);
setExcelCellsDropDownList(ref worksheetProgram, "=Teacher", worksheetProgram.Cells[2, 34], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 34]);
setExcelCellsDropDownList(ref worksheetProgram, "TRUE,FALSE", worksheetProgram.Cells[2, 43], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 43]);
// --- set Date on Excel ---
setExcelCellsDate(ref worksheetProgram, worksheetProgram.Cells[2, 6], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 6]);
setExcelCellsDate(ref worksheetProgram, worksheetProgram.Cells[2, 7], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 7]);
// --- set Time on Excel ---
setExcelCellsTime(ref worksheetProgram, worksheetProgram.Cells[2, 8], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 8]);
setExcelCellsTime(ref worksheetProgram, worksheetProgram.Cells[2, 9], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 9]);
// --- set Decimal on Excel ---
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 12], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 12]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 13], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 13]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 14], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 14]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 15], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 15]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 35], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 35]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 36], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 36]);
setExcelCellsDecimal(ref worksheetProgram, worksheetProgram.Cells[2, 44], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 44]);
// --- Set Integer on Excel ---
setExcelCellsInteger(ref worksheetProgram, worksheetProgram.Cells[2, 10], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 10]);
setExcelCellsInteger(ref worksheetProgram, worksheetProgram.Cells[2, 11], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 11]);
setExcelCellsInteger(ref worksheetProgram, worksheetProgram.Cells[2, 27], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 27]);
setExcelCellsInteger(ref worksheetProgram, worksheetProgram.Cells[2, 37], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 37]);
setExcelCellsInteger(ref worksheetProgram, worksheetProgram.Cells[2, 38], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 38]);
// --- Read Only Cell ---
setExcelCellsReadOnly(ref worksheetProgram, worksheetProgram.Cells[2, 1], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 1]);
setExcelCellsReadOnly(ref worksheetProgram, worksheetProgram.Cells[2, 4], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 4]);
setExcelCellsReadOnly(ref worksheetProgram, worksheetProgram.Cells[2, 29], worksheetProgram.Cells[ds.Tables[0].Rows.Count + 500, 29]);

// --- Auto Width ---
worksheetProgram.UsedRange.EntireColumn.AutoFit();

((Excel._Worksheet)worksheetProgram).Activate();
String strFile = "c:/YWCAEXPORT/" + System.DateTime.Now.Ticks.ToString() + ".xls";
workbook.SaveAs(strFile, Excel.XlFileFormat.xlWorkbookNormal,
null, null, false, false, Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);
xlApp.Quit();
GC.Collect();
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=ExportData.xls");

while (true)
{
if (writeFile(strFile))
{
break;
}
Thread.Sleep(500);
}
}
finally
{
//ds.Container.Dispose();
ds.DefaultViewManager.Dispose();
ds.Dispose();
}
}
catch (Exception ex)
{
lblMessage.Text = ex.Message + "<br/>" + ex.StackTrace;
}
finally
{
xlApp.Quit();
GC.Collect();

}
}
emyueguang 2009-12-22
  • 打赏
  • 举报
回复
晕啊,这么长的文章,看不懂啊

楼主还是到MSDN上面去看看吧,那边的斑竹素质比较的高,应该能够及时的解答你的问题
狼里格东 2009-12-22
  • 打赏
  • 举报
回复



// --- set AllowDropIn Drop Down List ---
for (int i = 0; i < AllowTrialEnrol.Length; i++)
{
worksheetMaster.Cells[i + 1, 10] = AllowTrialEnrol[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 2], worksheetMaster.Cells[AllowTrialEnrol.Length, 2]).Name = "AllowTrialEnrol";



// --- set Program WorkSheet ---
sqlCmd = new SqlCommand("SELECT * FROM PROGRAM_vExportReport_Course", _sqlConn);
DataSet ds = new DataSet();
SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCmd);
sqlDA.Fill(ds);
try
{


// --- Set Header ---
String[] Header = new String[] { "Course ID", "Course Type", "Category/Sub Category", "Course Code","Course Name",
"Start Date", "End Date", "Start Time", "End Time", "Total Number of Session",
"Session Per Week", "Non-member Fee Per Session", "Total Non-member Fee", "Member Fee Per Session", "Total Member Fee",
"Mon", "Tue", "Wed", "Thur", "Fri",
"Sat", "Sun", "Held Outside", "Where To Meet Detail", "Allow Drop In",
"Remarks", "Years", "Term", "Course Status", "Web Status",
"Room", "Room Setup", "Member Only", "Teacher", "Payment Split",
"Flat Fee", "Minimum Candidate","Maximum Candidate", "Course Description", "Meta Page Title",
"Meta Page Description", "Meta Keyword","Allow Trial Enrol","Material Cost Per Head" };

String[] Column = new String[] { "CourseID", "CourseType", "CategorySubCategory", "CourseCode","CourseName",
"StartDate", "EndDate", "StartTime", "EndTime", "TotalSession",
"SessionPerWeek", "NMemFeePerSession", "TotalNMemFee", "MemFeePerSession", "TotalMemFee",
"Mon", "Tue", "Wed", "Thur", "Fri",
"Sat", "Sun", "HeldOutside", "WhereToMeet", "AllowDropIn",
"Remarks", "Years", "Term", "CourseStatus", "WebStatus",
"Room", "RoomSetup", "MemberOnly", "Teacher", "PaymentSplit",
"FlatFee", "MinCandidate", "MaxCandidate", "CourseDesc", "Meta_PageTitle",
"Meta_PageDescription", "Meta_Keywords","AllowTrialEnrol","MaterialCostPerHead"};

for (int i = 0; i < Header.Length; i++)
{
worksheetProgram.Cells[1, 1 + i] = Header[i];
}
// --- Set Interior Color
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 1], worksheetProgram.Cells[1, Header.Length]);
range.Interior.ColorIndex = clrNMA;
range.Font.Bold = true;
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 1], worksheetProgram.Cells[1, 1]);
range.Interior.ColorIndex = clrSYS;
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 2], worksheetProgram.Cells[1, 22]);
range.Interior.ColorIndex = clrMAN;
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 25], worksheetProgram.Cells[1, 25]);
range.Interior.ColorIndex = clrMAN;
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 27], worksheetProgram.Cells[1, 30]);
range.Interior.ColorIndex = clrMAN;
range = worksheetProgram.get_Range(worksheetProgram.Cells[1, 37], worksheetProgram.Cells[1, 44]);
range.Interior.ColorIndex = clrMAN;

// --- Freeze Pane ---
xlApp.ActiveWindow.SplitRow = 1;
xlApp.ActiveWindow.FreezePanes = true;

狼里格东 2009-12-22
  • 打赏
  • 举报
回复


try
{
// --- set Master Data Work Sheet ---

// --- set HeldOutside Drop Down List ---
for (int i = 0; i < HeldOutside.Length; i++)
{
worksheetMaster.Cells[i + 1, 1] = HeldOutside[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 1], worksheetMaster.Cells[HeldOutside.Length, 1]).Name = "HeldOutside";

// --- set AllowDropIn Drop Down List ---
for (int i = 0; i < AllowDropIn.Length; i++)
{
worksheetMaster.Cells[i + 1, 2] = AllowDropIn[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 2], worksheetMaster.Cells[AllowDropIn.Length, 2]).Name = "AllowDropIn";

// --- set WebStatus Drop Down List ---
for (int i = 0; i < WebStatus.Length; i++)
{
worksheetMaster.Cells[i + 1, 3] = WebStatus[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 3], worksheetMaster.Cells[WebStatus.Length, 3]).Name = "WebStatus";

// --- set MemberOnly Drop Down List ---
for (int i = 0; i < MemberOnly.Length; i++)
{
worksheetMaster.Cells[i + 1, 4] = MemberOnly[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 4], worksheetMaster.Cells[MemberOnly.Length, 4]).Name = "MemberOnly";

// --- set Term Dropdownlist ---
sqlCmd = new SqlCommand("SELECT Name + '[' + Convert(NVARCHAR(7),TermID) +']' AS Term FROM ADMIN_MasterTerm", _sqlConn);
sqlCmd.CommandTimeout = 5;
sqlDR = sqlCmd.ExecuteReader();
int recordCount = 0;
while (sqlDR.Read())
{
worksheetMaster.Cells[recordCount + 1, 5] = sqlDR["Term"].ToString();
recordCount++;
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 5], worksheetMaster.Cells[recordCount, 5]).Name = "Term";
sqlDR.Close();

// --- set Room Dropdownlist ---
sqlCmd = new SqlCommand("SELECT RoomNo + '[' + Convert(NVARCHAR(7),RoomID) +']' AS Room FROM ADMIN_MasterRoom ORDER BY RoomNo", _sqlConn);
sqlDR = sqlCmd.ExecuteReader();
recordCount = 0;
while (sqlDR.Read())
{
worksheetMaster.Cells[recordCount + 1, 6] = sqlDR["Room"].ToString();
recordCount++;
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 6], worksheetMaster.Cells[recordCount, 6]).Name = "Room";
sqlDR.Close();

// --- set Teacher Dropdownlist ---
sqlCmd = new SqlCommand("SELECT FirstName +', '+LastName + '[' + Convert(NVARCHAR(7),TeacherID) +']' AS Teacher FROM TEACHER_Teacher ORDER BY FirstName,LastName", _sqlConn);
sqlDR = sqlCmd.ExecuteReader();
recordCount = 0;
while (sqlDR.Read())
{
worksheetMaster.Cells[recordCount + 1, 7] = sqlDR["Teacher"].ToString();
recordCount++;
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 7], worksheetMaster.Cells[recordCount, 7]).Name = "Teacher";
sqlDR.Close();

// --- set CourseType Drop Down List ---
for (int i = 0; i < CourseType.Length; i++)
{
worksheetMaster.Cells[i + 1, 8] = CourseType[i];
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 8], worksheetMaster.Cells[CourseType.Length, 8]).Name = "CourseType";

// --- set Category/Sub-Category Dropdownlist ---
sqlCmd = new SqlCommand("SELECT ADMIN_MasterCourseCategories.Name + '/' + ADMIN_MasterCourseSubCategories.Name + '[' + CONVERT(NVARCHAR,ADMIN_MasterCourseSubCategories.SubCategoryID) + ']' AS Catgeory FROM ADMIN_MasterCourseSubCategories,ADMIN_MasterCourseCategories WHERE ADMIN_MasterCourseSubCategories.CategoryID = ADMIN_MasterCourseCategories.CategoryID ORDER BY ADMIN_MasterCourseCategories.Name,ADMIN_MasterCourseSubCategories.Name", _sqlConn);
sqlDR = sqlCmd.ExecuteReader();
recordCount = 0;
while (sqlDR.Read())
{
worksheetMaster.Cells[recordCount + 1, 9] = sqlDR["Catgeory"].ToString();
recordCount++;
}
worksheetMaster.get_Range(worksheetMaster.Cells[1, 9], worksheetMaster.Cells[recordCount, 9]).Name = "Catgeory";
sqlDR.Close();
狼里格东 2009-12-22
  • 打赏
  • 举报
回复
一下是代码

protected void btnExport_Click(object sender, EventArgs e)
{

// --- init SQL Variable ---
SqlCommand sqlCmd;

SqlDataReader sqlDR;
// --- Define Color Column Header ---
int clrSYS = 38;
int clrMAN = 35;
int clrNMA = 36;

// -- init DropDownListValue ---
String[] CourseType = new String[] { "Social Event", "Volunteering", "Course" };
String[] HeldOutside = new String[] { "Yes", "No" };
String[] AllowDropIn = new String[] { "Yes", "No" };
String[] AllowTrialEnrol = new String[] { "TRUE", "FALSE" };
String[] WebStatus = new String[] { "Pending", "Live" };
String[] MemberOnly = new String[] { "Yes", "No" };

// --- init Excel Application ---
Excel.Application xlApp = new Excel.Application();
Excel.Range range;
Excel.Workbooks workbooks = xlApp.Workbooks;
Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
// --- create Program Work sheet ---
Excel.Worksheet worksheetProgram = (Excel.Worksheet)workbook.Worksheets[1];
// --- create Master Data Work sheet ---
Excel.Worksheet worksheetMaster = (Excel.Worksheet)workbook.Worksheets.Add(System.Reflection.Missing.Value, worksheetProgram, 1, Excel.XlWBATemplate.xlWBATWorksheet);
// --- set Master Data Work sheet Hide ---
worksheetMaster.Visible = Excel.XlSheetVisibility.xlSheetVeryHidden;
// --- set Name in Sheet ---
worksheetProgram.Name = "Program";
worksheetMaster.Name = "Master";

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧