Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 冻结Openxml中的窗格和列_C#_Excel_Openxml - Fatal编程技术网

C# 冻结Openxml中的窗格和列

C# 冻结Openxml中的窗格和列,c#,excel,openxml,C#,Excel,Openxml,我需要帮助 使用OpenXMLWriter我有一个问题要问 我目前正在使用下面的代码创建excel文件,但我想设置列的宽度和冻结窗格。我该怎么做 因为我已经为此编写了以下代码。我不知道为什么不工作 举个例子会很有帮助。非常感谢 public bool ExportData(DataSet ds, string destination, List<Tuple<string, string>> parms) { using (SpreadsheetDo

我需要帮助

使用OpenXMLWriter我有一个问题要问

我目前正在使用下面的代码创建excel文件,但我想设置列的宽度和冻结窗格。我该怎么做

因为我已经为此编写了以下代码。我不知道为什么不工作

举个例子会很有帮助。非常感谢

public bool ExportData(DataSet ds, string destination, List<Tuple<string, string>> parms)
    {
        using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(destination, SpreadsheetDocumentType.Workbook))
        {
            WorkbookPart wbp = spreadsheetDocument.AddWorkbookPart();
            WorksheetPart wsp = wbp.AddNewPart<WorksheetPart>();
            Workbook wb = new Workbook();
            FileVersion fv = new FileVersion();
            fv.ApplicationName = "Microsoft Office Excel";
            Worksheet worksheet = new Worksheet();
            SheetData sheetData = new SheetData();


            foreach (DataTable table in ds.Tables)
            { 
                Row headerRow = new Row();

                int lp = 1;
                foreach (var parm in parms)
                {
                    Row newRow = new Row();

                    // Write the parameter names
                    Cell parmNameCell = new Cell();
                    parmNameCell.DataType = CellValues.String;
                    parmNameCell.CellValue = new CellValue(parm.Item1.ToString()); //
                    parmNameCell.StyleIndex = 1;

                    newRow.AppendChild(parmNameCell);

                    // Write the parameter values

                    Cell parmValCell = new Cell();
                    parmValCell.DataType = CellValues.InlineString;
                    parmValCell.DataType = CellValues.String;                       
                    parmValCell.CellValue = new CellValue(parm.Item2?.ToString()); //
                    newRow.AppendChild(parmValCell);

                    sheetData.AppendChild(newRow);

                    lp++;
                }

                Columns columns = new Columns();
                int i = 1;
                foreach (DataColumn column in table.Columns)    
                {
                    Column column1 = new Column();
                    column1.Min = Convert.ToUInt32(i);
                    column1.Max = Convert.ToUInt32(i);                        
                    column1.Width = insertSpaceBeforeUpperCAse(column.ColumnName).Length + 2;
                    column1.BestFit = true;
                    columns.Append(column1);
                    i++;
                }
                worksheet.Append(columns);

                int freezeRow = lp;

                Row blankRow = new Row();
                sheetData.AppendChild(blankRow);

                //// Write the column names
                List<string> columns2 = new List<string>();
                foreach (DataColumn column in table.Columns)
                {
                    columns2.Add(column.ColumnName);

                    Cell cell = new Cell();
                    cell.DataType = CellValues.String;
                    cell.CellValue = new CellValue(insertSpaceBeforeUpperCAse(column.ColumnName));

                    cell.StyleIndex = 1;
                    headerRow.AppendChild(cell);
                }

                sheetData.AppendChild(headerRow);

                foreach (DataRow dsrow in table.Rows)
                {
                    Row newRow = new Row();
                    foreach (string col in columns2)
                    {
                        Cell cell = new Cell();
                        cell.DataType = CellValues.String;
                        cell.CellValue = new CellValue(dsrow[col].ToString()); //
                        newRow.AppendChild(cell);
                    }

                    sheetData.AppendChild(newRow);
                }                       

                //worksheet.Append(sheetData);
                //wsp.Worksheet = worksheet;
                //wsp.Worksheet.Save();

                Sheets sheets = new Sheets();
                Sheet sheet = new Sheet();
                sheet.Name = table.TableName;
                sheet.SheetId = 1;
                sheet.Id = wbp.GetIdOfPart(wsp);

                sheets.Append(sheet);
                wb.Append(fv);
                wb.Append(sheets);



                #region Freeze Panel

                string freezeRangeFrom = $"A{freezeRow + 2}";

                SheetViews sheetViews = new SheetViews();
                SheetView sheetView = new SheetView()
                {
                    TabSelected = false,
                    WorkbookViewId = (UInt32Value)0U
                };

                Pane pane = new Pane()
                {
                    VerticalSplit = 7D,
                    TopLeftCell = freezeRangeFrom,
                    ActivePane = PaneValues.BottomLeft,
                    State = PaneStateValues.Frozen
                };

                sheetView.Append(pane);
                sheetViews.Append(sheetView);
                worksheet.Append(sheetViews);
                worksheet.Append(sheetData);
                wsp.Worksheet = worksheet;
                wsp.Worksheet.Save();

                #endregion



            }
            spreadsheetDocument.WorkbookPart.Workbook = wb;
            spreadsheetDocument.WorkbookPart.Workbook.Save();
            spreadsheetDocument.Close();

        }

        return true;
    }
public bool ExportData(数据集ds、字符串目标、列表参数)
{
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Create(目标,SpreadsheetDocumentType.工作簿))
{
WorkbookPart wbp=电子表格文档.AddWorkbookPart();
工作表部件wsp=wbp.AddNewPart();
工作簿wb=新工作簿();
FileVersion fv=新的FileVersion();
fv.ApplicationName=“Microsoft Office Excel”;
工作表=新工作表();
SheetData SheetData=新的SheetData();
foreach(ds.Tables中的数据表)
{ 
Row headerRow=新行();
int-lp=1;
foreach(var parm in parms)
{
行newRow=新行();
//写下参数名
Cell parmNameCell=新单元格();
parmNameCell.DataType=CellValues.String;
parmNameCell.CellValue=新的CellValue(parm.Item1.ToString())//
parmNameCell.StyleIndex=1;
newRow.AppendChild(parmNameCell);
//写入参数值
Cell parmValCell=新单元();
parmValCell.DataType=CellValues.InlineString;
parmValCell.DataType=CellValues.String;
parmValCell.CellValue=新的CellValue(parm.Item2?.ToString())//
纽罗.阿佩奇尔德(parmValCell);
sheetData.AppendChild(纽罗);
lp++;
}
Columns=新列();
int i=1;
foreach(table.Columns中的DataColumn列)
{
Column column1=新列();
column1.Min=Convert.ToUInt32(i);
column1.Max=Convert.ToUInt32(i);
column1.Width=insertSpaceBeforeUpperCAse(column.ColumnName)。长度+2;
column1.BestFit=真;
列。追加(第1列);
i++;
}
工作表。追加(列);
int-row=lp;
行blankRow=新行();
sheetData.AppendChild(空白行);
////写下列名
List columns2=新列表();
foreach(table.Columns中的DataColumn列)
{
columns2.Add(column.ColumnName);
单元格=新单元格();
cell.DataType=CellValues.String;
cell.CellValue=新的CellValue(insertSpaceBeforeUpperCAse(column.ColumnName));
cell.StyleIndex=1;
头附子(单元);
}
sheetData.AppendChild(headerRow);
foreach(table.Rows中的数据行dsrow)
{
行newRow=新行();
foreach(列2中的字符串列)
{
单元格=新单元格();
cell.DataType=CellValues.String;
cell.CellValue=新的CellValue(dsrow[col].ToString())//
newRow.AppendChild(单元格);
}
sheetData.AppendChild(纽罗);
}                       
//工作表。附加(表数据);
//工作表=工作表;
//wsp.Worksheet.Save();
板材=新板材();
板材=新板材();
sheet.Name=table.TableName;
sheet.SheetId=1;
sheet.Id=wbp.GetIdOfPart(wsp);
附页(页);
wb.Append(fv);
wb.追加(张);
#区域冻结小组
字符串freezeRangeFrom=$“A{freezeRow+2}”;
SheetViews SheetViews=新的SheetViews();
SheetView SheetView=新建SheetView()
{
TabSelected=false,
WorkbookViewId=(UINT32值)0U
};
窗格=新窗格()
{
垂直分裂=7D,
TopLeftCell=冻结范围从,
ActivePane=PaneValues.BottomLeft,
State=PaneStateValues.freezed
};
sheetView.Append(窗格);
sheetView.Append(sheetView);
工作表。附加(图纸视图);
工作表。附加(表数据);
工作表=工作表;
wsp.Worksheet.Save();
#端区
}
spreadsheetDocument.WorkbookPart.Workbook=wb;
spreadsheetDocument.WorkbookPart.Workbook.Save();
电子表格文档。关闭();
}
返回true;
}

我需要你。请帮帮我……

这在过去曾经咬过我必须在数据之前将视图添加到图纸中。您可以尝试以下方法:

public bool ExportData(DataSet ds, string destination, List<Tuple<string, string>> parms)
{
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(destination, SpreadsheetDocumentType.Workbook))
    {
        WorkbookPart wbp = spreadsheetDocument.AddWorkbookPart();
        WorksheetPart wsp = wbp.AddNewPart<WorksheetPart>();
        Workbook wb = new Workbook();
        FileVersion fv = new FileVersion();
        fv.ApplicationName = "Microsoft Office Excel";

        #region Freeze Panel

        var freezeRow = parms.Count;
        string freezeRangeFrom = $"A{freezeRow + 2}";

        SheetViews sheetViews = new SheetViews();
        SheetView sheetView = new SheetView()
        {
            TabSelected = false,
            WorkbookViewId = (UInt32Value)0U
        };

        Pane pane = new Pane()
        {
            VerticalSplit = 7D,
            TopLeftCell = freezeRangeFrom,
            ActivePane = PaneValues.BottomLeft,
            State = PaneStateValues.Frozen
        };

        sheetView.Append(pane);

        #endregion

        Worksheet worksheet = new Worksheet(new SheetViews(sheetView));
        SheetData sheetData = new SheetData();


        foreach (DataTable table in ds.Tables)
        {
            Row headerRow = new Row();

            foreach (var parm in parms)
            {
                Row newRow = new Row();

                // Write the parameter names
                Cell parmNameCell = new Cell();
                parmNameCell.DataType = CellValues.String;
                parmNameCell.CellValue = new CellValue(parm.Item1.ToString()); //
                parmNameCell.StyleIndex = 1;

                newRow.AppendChild(parmNameCell);

                // Write the parameter values

                Cell parmValCell = new Cell();
                parmValCell.DataType = CellValues.InlineString;
                parmValCell.DataType = CellValues.String;
                parmValCell.CellValue = new CellValue(parm.Item2?.ToString()); //
                newRow.AppendChild(parmValCell);

                sheetData.AppendChild(newRow);
            }

            Columns columns = new Columns();
            int i = 1;
            foreach (DataColumn column in table.Columns)
            {
                Column column1 = new Column();
                column1.Min = Convert.ToUInt32(i);
                column1.Max = Convert.ToUInt32(i);
                column1.Width = insertSpaceBeforeUpperCAse(column.ColumnName).Length + 2;
                column1.BestFit = true;
                columns.Append(column1);
                i++;
            }
            worksheet.Append(columns);

            Row blankRow = new Row();
            sheetData.AppendChild(blankRow);

            //// Write the column names
            List<string> columns2 = new List<string>();
            foreach (DataColumn column in table.Columns)
            {
                columns2.Add(column.ColumnName);

                Cell cell = new Cell();
                cell.DataType = CellValues.String;
                cell.CellValue = new CellValue(insertSpaceBeforeUpperCAse(column.ColumnName));

                cell.StyleIndex = 1;
                headerRow.AppendChild(cell);
            }

            sheetData.AppendChild(headerRow);

            foreach (DataRow dsrow in table.Rows)
            {
                Row newRow = new Row();
                foreach (string col in columns2)
                {
                    Cell cell = new Cell();
                    cell.DataType = CellValues.String;
                    cell.CellValue = new CellValue(dsrow[col].ToString()); //
                    newRow.AppendChild(cell);
                }

                sheetData.AppendChild(newRow);
            }

            //worksheet.Append(sheetData);
            //wsp.Worksheet = worksheet;
            //wsp.Worksheet.Save();

            Sheets sheets = new Sheets();
            Sheet sheet = new Sheet();
            sheet.Name = table.TableName;
            sheet.SheetId = 1;
            sheet.Id = wbp.GetIdOfPart(wsp);

            sheets.Append(sheet);
            wb.Append(fv);
            wb.Append(sheets);
        }
        spreadsheetDocument.WorkbookPart.Workbook = wb;
        spreadsheetDocument.WorkbookPart.Workbook.Save();
        spreadsheetDocument.Close();

    }

    return true;
}
public bool ExportData(数据集ds、字符串目标、列表参数)
{
使用(SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Create(目标,SpreadsheetDocumentType.工作簿))
{
WorkbookPart wbp=电子表格文档.AddWorkbookPart();
作品
        SheetView sheetView = new SheetView() { TabSelected = true, WorkbookViewId = (UInt32Value)0U };
        Pane pane = new Pane() { VerticalSplit = 1D, TopLeftCell = "A2", ActivePane = PaneValues.BottomLeft, State = PaneStateValues.Frozen };
        Selection selection = new Selection() { Pane = PaneValues.BottomLeft, ActiveCell = "A2", SequenceOfReferences = new ListValue<StringValue>() { InnerText = "A2:XFD2" } };
        sheetView.Append(pane);
        sheetView.Append(selection);
var sheetViews = new SheetViews();
var sheetView = new SheetView() { TabSelected = true, WorkbookViewId = (UInt32Value)0U };
var pane = new Pane() { ActivePane = PaneValues.TopRight, HorizontalSplit = 1D, State = PaneStateValues.Frozen, TopLeftCell = "B1" };
var selection = new Selection() { Pane = PaneValues.TopRight };
sheetView.Append(pane);
sheetView.Append(selection);
sheetViews.Append(sheetView);